关注微信公众号【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解析保证字段顺序终极总结相关推荐

  1. Json解析数据导致顺序改变问题

    Json解析数据导致顺序改变问题 json解析的时候,通常顺序会发生改变,如果我们有保持原有顺序的需求的话可以通过如下方式 使用fastJson的Feature.OrderedField JSONOb ...

  2. 按字段顺序加载或解析JSON对象

     1.保证json对象按put顺序加载属性 // 保证json对象按字段顺序put JSONObject jsonObject = new JSONObject(true); 原理: 2.字符串解析j ...

  3. java解析sql查询字段_sql解析json格式字段 如何获取json中某个字段的值?

    java将json数据解析为sql语句?小编给你倒一杯热水.可你惦记着其他饮料,所以你将它放置一旁.等你想起那杯水时,可惜它已经变得冰冷刺骨. 图片中是json数据,每个数据的开头都有表名称,操作类型 ...

  4. 迈克尔 杰克逊mv_杰克逊JSON解析错误– UnrecognizedPropertyException:无法识别的字段,未标记为可忽略[已解决]...

    迈克尔 杰克逊mv 在解析从我们的一个RESTful Web服务接收到的JSON字符串时,我收到此错误"线程" main"中的异常com.fasterxml.jackso ...

  5. 杰克逊JSON解析错误-UnrecognizedPropertyException:无法识别的字段,未标记为可忽略[已解决]...

    在解析从我们的一个RESTful Web服务接收到的JSON字符串时,我收到此错误"线程" main"中的异常com.fasterxml.jackson.databind ...

  6. Oracle怎么获取json类型字符串值,sql解析json格式字段 如何获取json中某个字段的值?...

    java将json数据解析为sql语句?小编给你倒一杯热水.可你惦记着其他饮料,所以你将它放置一旁.等你想起那杯水时,可惜它已经变得冰冷刺骨. 图片中是json数据,每个数据的开头都有表名称,操作类型 ...

  7. Hive中解析Json字段、json日志分析所用到的嵌套json解析

    首先在百度搜索,json格式解析,将这段话变个格式看起来舒服. 然后,通过通过嵌套使用json函数解决.大概就是将内层的json字段当作一个整体,然后先将这个外层作为解析.在通过子查询使用方法,在外套 ...

  8. java 自定义json解析注解 复杂json解析 工具类

    java 自定义json解析注解 复杂json解析 工具类 目录 java 自定义json解析注解 复杂json解析 工具类 1.背景 2.需求-各式各样的json 一.一星难度json[json对象 ...

  9. 文件解析 (JSON解析)

    一.什么是JSON JSON是一种轻量级的数据交换格式,它基于ECMAScript的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据.简洁和清晰的层次结构使得JSDN成为理想的数据交换语言. ...

最新文章

  1. MySQL创建普通用户
  2. android studio debug设置,在Android Studio中使用Flutter进行调试时如何“设置值...”
  3. 33.Node.js 文件系统fs
  4. js cookie操作
  5. 开源SQL-on-Hadoop系统一览
  6. SAP WM The Link Between TR and TO Document
  7. 一款精美的漂亮的EMLOG模板
  8. 赔了24亿,干到中国第一!最“不要命”航班,竟让无数人抢着坐?
  9. 1_统计学习方法概论
  10. C#网络Socket编程
  11. msys2编译ffmpeg:ERROR: libx264 not found
  12. [SQLite]www.sqlite.org官网.NET最新版本所有内容下载
  13. eclipse快捷方式打不开解决方法
  14. 牛客网经典120道Java面试常见题(试题+答案)
  15. Perl变量作用域和自定义函数小结
  16. 由 tpp.c:63: __pthread_tpp_change_priority failed 引发的思考
  17. 云原生钻石课程 | 第6课:Kubernetes网络架构原理深度剖析(上)
  18. 20150113-下雨天在窗前
  19. 扫描普通二维码跳转到微信小程序指定页面
  20. win11系统恢复Win10右键菜单的方法

热门文章

  1. 【教程】如何解决vs编译器scanf函数报错问题
  2. Android 日期筛选器
  3. IDENTITY属性的使用详解
  4. ES6总结——let、const
  5. Vue 双向数据绑定原理
  6. 二维Gabor 滤波加速
  7. dnf过年服务器维护否,dnf1月17日跨区服务器更新了什么 跨区服务器停机维护公告...
  8. Sophus编译出错:lvalue required as left operand of assignment
  9. Word中表格如何均匀铺满整页
  10. vue安装教程(自己安装过程及遇到的一些坑)