JSON解析保证字段顺序终极总结
关注微信公众号【BigData512】,了解更多大数据技术,还有免费资料等你哦
简介
在日常开发中不免会遇到解析JSON数据的问题,有些需求需要保证解析后json字段的顺序不变,接下来给大家总结一些实用的保证Json字段顺序的解析方法。
Json字段顺序解析方法
1、解析时增加参数不调整顺序(fastjson)
JSONObject respondeBodyJson = JSONObject.parseObject(jsonStr, Feature.OrderedField);
2、初始化json对象为有序对象:(fastjson)
JSONObject json= new JSONObject(true);
3、使用Gson解析
JsonObject returnData = new JsonParser().parse(replyString).getAsJsonObject();
案例
实用fastJson获取json数据有顺序的key组成的字符串
public class KafkaColumn {public static String getKadfkaColumn(String jsonData) {JSONObject parse = JSONObject.parseObject(jsonData, Feature.OrderedField);Set<Map.Entry<String, Object>> entries = parse.entrySet();StringBuffer sb = new StringBuffer();for (Map.Entry<String, Object> entry: entries) {sb.append(entry.getKey());sb.append(",");}String kafkaColumn = sb.toString().substring(0, sb.length() - 1);return kafkaColumn;}public static void main(String[] args) {String str="{\"id\":\"156015\",\"user\":\"-\",\"time\":\"2019-06-10 16:31:33\",\"ip\":\"127.0.0.1\"}";System.out.println(getKadfkaColumn(str));}
}
结果:
json串反转义消除反斜杠
JSon串在被串行化后保存在文件中,读取字符串时,是不能直接拿来用JSON.parse()解析为JSON 对象的。因为它是一个字符串,不是一个合法的JSON对象格式。例如下面的JSON串保存在文件中,读出来不能直接解析:
“{\"resourceId\":\"dfead70e4ec5c11e43514000ced0cdcaf\",\"properties\":{\"process_id\":\"process4\",\"name\":\"\",\"documentation\":\"\",\"processformtemplate\":\"\"}}"
这个串如果出现在代码中是没有问题的,因为反斜杠就表示转义,但如果从文本文件中直接读出来就是这个样子,则不能直接用JSON.parse()进行解析,需要反串行化,消除掉反斜杠。有些programmer喜欢自己写一个工具类来做这样的事情,但已经有方便快捷的工具类可以来做这件事情,毋需我们重复发明车轮子。
可以直接使用Apache 的 common.lang工具包(使用工具类:org.apache.commons.lang.StringEscapeUtils)。例子如下:
public void test(){String str1 = "{\"resourceId\":\"dfead70e4ec5c11e43514000ced0cdcaf\",\"properties\":{\"process_id\":\"process4\",\"name\":\"\",\"documentation\":\"\",\"processformtemplate\":\"\"}}";String tmp = StringEscapeUtils.unescapeJavaScript(str1);System.out.println("tmp:" + tmp);}
输出:
tmp:{"resourceId":"51ad70e41c5c11e88514000c290cdcfa","properties":{"process_id":"process4","name":"","documentation":"","processformtemplate":""}}
扫一扫加入大数据公众号,了解更多大数据技术,还有免费资料等你哦
扫一扫加入大数据公众号,了解更多大数据技术,还有免费资料等你哦
扫一扫加入大数据公众号,了解更多大数据技术,还有免费资料等你哦
JSON解析保证字段顺序终极总结相关推荐
- Json解析数据导致顺序改变问题
Json解析数据导致顺序改变问题 json解析的时候,通常顺序会发生改变,如果我们有保持原有顺序的需求的话可以通过如下方式 使用fastJson的Feature.OrderedField JSONOb ...
- 按字段顺序加载或解析JSON对象
1.保证json对象按put顺序加载属性 // 保证json对象按字段顺序put JSONObject jsonObject = new JSONObject(true); 原理: 2.字符串解析j ...
- java解析sql查询字段_sql解析json格式字段 如何获取json中某个字段的值?
java将json数据解析为sql语句?小编给你倒一杯热水.可你惦记着其他饮料,所以你将它放置一旁.等你想起那杯水时,可惜它已经变得冰冷刺骨. 图片中是json数据,每个数据的开头都有表名称,操作类型 ...
- 迈克尔 杰克逊mv_杰克逊JSON解析错误– UnrecognizedPropertyException:无法识别的字段,未标记为可忽略[已解决]...
迈克尔 杰克逊mv 在解析从我们的一个RESTful Web服务接收到的JSON字符串时,我收到此错误"线程" main"中的异常com.fasterxml.jackso ...
- 杰克逊JSON解析错误-UnrecognizedPropertyException:无法识别的字段,未标记为可忽略[已解决]...
在解析从我们的一个RESTful Web服务接收到的JSON字符串时,我收到此错误"线程" main"中的异常com.fasterxml.jackson.databind ...
- Oracle怎么获取json类型字符串值,sql解析json格式字段 如何获取json中某个字段的值?...
java将json数据解析为sql语句?小编给你倒一杯热水.可你惦记着其他饮料,所以你将它放置一旁.等你想起那杯水时,可惜它已经变得冰冷刺骨. 图片中是json数据,每个数据的开头都有表名称,操作类型 ...
- Hive中解析Json字段、json日志分析所用到的嵌套json解析
首先在百度搜索,json格式解析,将这段话变个格式看起来舒服. 然后,通过通过嵌套使用json函数解决.大概就是将内层的json字段当作一个整体,然后先将这个外层作为解析.在通过子查询使用方法,在外套 ...
- java 自定义json解析注解 复杂json解析 工具类
java 自定义json解析注解 复杂json解析 工具类 目录 java 自定义json解析注解 复杂json解析 工具类 1.背景 2.需求-各式各样的json 一.一星难度json[json对象 ...
- 文件解析 (JSON解析)
一.什么是JSON JSON是一种轻量级的数据交换格式,它基于ECMAScript的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据.简洁和清晰的层次结构使得JSDN成为理想的数据交换语言. ...
最新文章
- MySQL创建普通用户
- android studio debug设置,在Android Studio中使用Flutter进行调试时如何“设置值...”
- 33.Node.js 文件系统fs
- js cookie操作
- 开源SQL-on-Hadoop系统一览
- SAP WM The Link Between TR and TO Document
- 一款精美的漂亮的EMLOG模板
- 赔了24亿,干到中国第一!最“不要命”航班,竟让无数人抢着坐?
- 1_统计学习方法概论
- C#网络Socket编程
- msys2编译ffmpeg:ERROR: libx264 not found
- [SQLite]www.sqlite.org官网.NET最新版本所有内容下载
- eclipse快捷方式打不开解决方法
- 牛客网经典120道Java面试常见题(试题+答案)
- Perl变量作用域和自定义函数小结
- 由 tpp.c:63: __pthread_tpp_change_priority failed 引发的思考
- 云原生钻石课程 | 第6课:Kubernetes网络架构原理深度剖析(上)
- 20150113-下雨天在窗前
- 扫描普通二维码跳转到微信小程序指定页面
- win11系统恢复Win10右键菜单的方法