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<br/>
* 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

JSON格式化和压缩成一行的更多相关文章

  1. 记一个在线工具网站,程序员必备,json格式化、压缩、转义,加解密 编码解码

    简用-在线工具箱-简单易用-工具大全 提供 json格式化,json代码压缩,json校验解析,json数组解析,json转xml,xml转json,json解析,json在线解析,json在线解析及 ...

  2. html 压缩成一行

    文章java gulp-htmlmin 减少下载的时间

  3. Asp.net WebAPi gzip压缩和json格式化

    现在webapi越来越流行了,很多时候它都用来做接口返回json格式的数据,webapi原本是根据客户端的类型动态序列化为json和xml的,但实际很多时候我们都是序列化为json的,所以webapi ...

  4. HTML-DEV-ToolLink(常用的在线字符串编解码、代码压缩、美化、JSON格式化、正则表达式、时间转换工具、二维码生成与解码等工具,支持在线搜索和Chrome插件。)

    HTML-DEV-ToolLink:https://github.com/easonjim/HTML-DEV-ToolLink 常用的在线字符串编解码.代码压缩.美化.JSON格式化.正则表达式.时间 ...

  5. 表单配置项写法,表单写成JSON数组套对象,一行是一个数组单位,一列是一个对象单位,然后再写一个公共组件读取这个配置,循环加载slot,外层载入slot的自定义部分,比如input select等,这种写法就是把组件嵌套改为配置方式

    表单配置项写法,表单写成JSON数组套对象,一行是一个数组单位,一列是一个对象单位,然后再写一个公共组件读取这个配置,循环加载slot,外层载入slot的自定义部分,比如input select等,这 ...

  6. js中Json字符串如何转成Json对象(4种转换方式)

    js中Json字符串如何转成Json对象(4种转换方式) 一.总结 一句话总结:原生方法(就是浏览器默认支持的方法) 浏览器支持的转换方式(Firefox,chrome,opera,safari,ie ...

  7. yformater - chrome谷歌浏览器json格式化json高亮json解析插件

    yformater是一款chrome浏览器插件,用来格式化(高亮)服务端接口返回的json数据. 实际上小菜并不是第一个写这种插件的,但是现有的chrome json格式化插件实在是不太好用,索性小菜 ...

  8. JSON格式化与serialize序列化

    一.JSON格式化 1. JSON是什么 JSON是一种数据的存储格式,用来沟通客户端Javascript和服务端PHP的交互.我们把用PHP生成JSON后的字符串传给前台Javascript,Jav ...

  9. JSON格式化 JSON美化 输出到html

    {"promotion_details":{"promotion_detail":[{"discount_fee":"22.20& ...

  10. json格式化和查看工具

    以前一直以来都觉得xml个可读性要比json的可读性好,后来使用了JSON Viewer这个小工具之后,发现自己错了.之前认为json的可读性差,完全是因为没有很好的查看工具.JSON Viewer这 ...

随机推荐

  1. Elasticsearch搜索引擎学习笔记(三)

    索引的一些操作 集群健康 GET /_cluster/health 创建索引 PUT /index_test { "settings": { "index": ...

  2. google浏览器删除token

    测试登录时长,页面是否返回到首页 删除token

  3. # 如何引进高级的 IT 自动化项目:一个 3 步走计划

    如果您的团队与大多数 IT 组织一样,您的团队正在执行某种形式的自动化(包括开发和运营),即使只是运行简单的脚本来完成基本任务. 事实上,开始自动化之旅的最佳地点是执行普通的.低技能的任务,例如密码重 ...

  4. idea 缺失右侧maven窗口

    最近整了一个别人的项目到本地,发现在git下载项目到本地后,再通过idea的打开项目后,缺失了右侧的maven窗口. 注: idea是有安装到maven(idea默认是已经安装好的) 打开的项目也是m ...

  5. composer 指定php版本

    需要指定php和composer的位置,然后再去执行composer命令 ## 指定PHP版本 指定composer 指定载入包 /usr/local/php7/bin/php composer /u ...

  6. ISO9126

    ISO9126 软件质量模型是评价软件质量的国际标准,由6个特性和27个子特性组成.     中文名 软件质量模型 外文名 ISO9126 属    于 软件产品评价-质量特性 层    次 质量特性 ...

  7. python-argparse用法简介

    1. argparse介绍 argparse是Python标准库中用于解析命令行参数的模块.它提供了一种简洁而灵活的方式来处理命令行参数,包括选项(可选参数)和位置参数(必需参数) 2. argpar ...

  8. MySQL-redo log 和 binlog

    redo log部分 为什么需要redo log? 简单的说,如果每次更新数据库的操作,都去更新磁盘的话,开销是很大的.通过引入redo log日志,其中记录了每次更新的操作明细,在系统不繁忙的时候, ...

  9. dxSpreadSheet的报表

    这个玩意还真的很棒.几乎把excel的都融进来了.现在说Repoert. In addition to all the functionality available in the Spreadshe ...

  10. 关于TFDMemtable的使用场景

    TFDMemtable是FireDAC框架的内存数据集组件.也是处理数据最快速的组件.简单说是把数据快储在内存中进行处理,因此其数据是和数据源是隔离的. 使用场景: 1.把一些少量的经常会使用的数据放 ...