JSON格式化和压缩成一行 您所在的位置:网站首页 json压缩工具 JSON格式化和压缩成一行

JSON格式化和压缩成一行

2023-05-09 00:23| 来源: 网络整理| 查看: 265

JSON格式化和压缩成一行

摘要:把JSON字符串压缩成一行,即去掉中的空格、回车、换行符、制表符等;格式化JSON, 易于阅读。

  JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

  无论是数据的传输还是存储,在很多应用场景下,可能想压缩JSON字符串的长度,以提升传输效率。你如果使用的是nosql数据库,可能想进一步的压缩json字符串的长度来节省存储空间,要怎么才能快速的去掉这些空格和换行符等呢?本文介绍如何使用代码去掉字符串里面的空格、回车、换行符、制表符等,但是,删除空格的时候,只删除两个连在一起的空格,不删除两个字符中间的单个字符。例如将如下json压缩成一行:

{ "address":"河南省 商丘师范学院,坐标: x, y", "name":"JSON String", "age":"29", "addressTest":"无对应属性,不转换" }

压缩后的结果:

{"name":"JSON String","age":"29","address":"河南省 商丘师范学院,坐标: x, y","addressTest":"无对应属性,不转换"} JSON工具类

   定义JSON工具类JsonUtil:

import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializerFeature; import org.apache.commons.lang3.StringUtils; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 格式化json * java去掉String里面的空格、回车、换行符、制表符等 * @Author: Wiener * @Date: 2021/9/25 19:52 */ public class JsonUtil { public static final String EMPTY = ""; /** * 替换所有空格,留下一个 */ private static final String REPLACE_BLANK_ENTER = "\\s{2,}|\t|\r|\n"; private static final Pattern REPLACE_P = Pattern.compile(REPLACE_BLANK_ENTER); /** * 使用正则表达式删除字符串中的空格、回车、换行符、制表符 * @param str * @return */ public static String replaceAllBlank(String str) { String dest = ""; if (StringUtils.isNotBlank(str)) { Matcher m = REPLACE_P.matcher(str); dest = m.replaceAll(""); } return dest; } /** * 去除字符串中的空格、回车、换行符、制表符 * \n 回车(\u000a) * \t 水平制表符(\u0009) * \s 空格(\u0008) * \r 换行(\u000d) * @param source * @return */ public static String replaceBlank(String source) { String ret = EMPTY; if (StringUtils.isNotBlank(source)) { ret = source.replaceAll(StringUtils.LF, EMPTY) .replaceAll("\\s{2,}", EMPTY) .replaceAll("\\t", EMPTY) .replaceAll(StringUtils.CR, EMPTY); } return ret; } /** * 使用fastjson JSONObject格式化输出JSON字符串 * @param source * @return */ public static String formatJson(String source) { JSONObject object = JSONObject.parseObject(source); String pretty = JSON.toJSONString(object, SerializerFeature.PrettyFormat, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteDateUseDateFormat); return pretty; } public static String formatJsonOneRow(String source) { JSONObject object = JSONObject.parseObject(source); String pretty = JSON.toJSONString(object, SerializerFeature.PrettyFormat, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteDateUseDateFormat); return pretty; } public static void main(String[] args) { String source = "{\"name\":\"JSON String\",\"age\":\"29\",\"address\":\"河南省 商丘师范学院,坐标: x, y\",\"addressTest\":\"无对应属性,不转换\"}"; System.out.println("-------formatJson---------"); System.out.println(formatJson(source)); System.out.println("-------replaceBlank---------"); System.out.println(replaceBlank(source)); System.out.println("-------replaceAllBlank---------"); System.out.println(replaceAllBlank(source)); } }

测试结果如下:

-------formatJson--------- { "address":"河南省 商丘师范学院,坐标: x, y", "name":"JSON String", "age":"29", "addressTest":"无对应属性,不转换" } -------replaceBlank--------- {"name":"JSON String","age":"29","address":"河南省 商丘师范学院,坐标: x, y","addressTest":"无对应属性,不转换"} -------replaceAllBlank--------- {"name":"JSON String","age":"29","address":"河南省 商丘师范学院,坐标: x, y","addressTest":"无对应属性,不转换"} 小结

  工作中处处都需要学习,有时候看似简单的一个优化,可以让你深入学习后收获各种知识。所以在学习中要不求甚解,不仅要了解这个知识点,也要熟悉为什么要这么做。知行合一:学习完一个知识点要尽量及时实践,这样才能记得牢靠。

Reference https://www.cnblogs.com/east7/p/11827908.html?utm_source=tuicool


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有