`
inlhx
  • 浏览: 49928 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

fastjson排序 Map多层嵌套转换自动排序问题终极解决方案

阅读更多

       最近项目中用到了fastjson(1.2.15)需要将前端多层嵌套json转换为map,由于map的无序性,想了很多办法,最终找到使用 Map m= JSONArray.parseObject(json, LinkedHashMap<String,String>.class); 来转换,问题来了,第一层顺序是对的,但是第二层排序居然出问题了,目前仅仅只是需要转换成String 他居然把String都给自动排序了,后来网上查了很多资料发现还可以采用一种方式:

    JSONObject jsonObj = new JSONObject(true);
    Map m= jsonObj.parseObject(json, LinkedHashMap.class);

 但是输出问题还是存在第二层以后排序混乱,如下:

传入Json:
{"t1":"","t3":"","t2":{"a1":"","a3":"","a2":""}}

 

输出:

{t1=, t3=, t2={"a1":"","a2":"","a3":""}}

 

无奈,跟踪fastjson源码,花了2小时在com.alibaba.fastjson.parser.DefaultJSONParser 类中475行发现

 else if (ch == '{') { // 减少嵌套,兼容android
                    lexer.nextToken();

                    final boolean parentIsArray = fieldName != null && fieldName.getClass() == Integer.class;

                    JSONObject input = new JSONObject(lexer.isEnabled(Feature.OrderedField));
                   

 居然这里面判断了Feature.OrderedField

果断知道了解决办法:

HashMap m=  JSON.parseObject(json,LinkedHashMap.class,Feature.OrderedField);

搞定,输出结果:

{t1=, t3=, t2={"a1":"","a3":"","a2":""}}

 

功夫不负有心人.........

5
0
分享到:
评论
3 楼 youngcoder 2017-12-05  
666   xiexie ~
2 楼 FutaoSmile丶 2017-12-04  
注册账号发句感谢
1 楼 ipuhua 2016-09-27  
非常棒!完美解决了我在使用fastjson遇到的问题。感谢~!

相关推荐

    安卓网站交互JSONxmlWebserviceUPnP相关-使用fastjson解析实体嵌套只要一行代码就可以解析负责的json嵌套.zip

    【标题】中的“安卓网站交互JSONxmlWebserviceUPnP相关-使用fastjson解析实体嵌套只要一行代码就可以解析负责的json嵌套”涉及到几个关键概念,让我们逐一详解: 1. **JSON**: JSON(JavaScript Object Notation)...

    【Gson+fastjson】json转换工具

    在Java开发中,为了方便地进行JSON与Java对象之间的转换,我们常常会使用到Gson和Fastjson这两个库。 **Gson库** Gson是Google提供的一款开源库,它能够将Java对象转换为JSON字符串,同时也能够将JSON内容反序列...

    fastjson1.2.47远程代码漏洞解决方案.rar

    1. **禁用自动类型转换**:可以通过设置`FastjsonConfig`的`autoTypeSupport`为`false`来关闭自动类型识别,减少反序列化风险。 2. **白名单配置**:配置白名单类,限制Fastjson允许反序列化的类,只允许安全的类...

    fastjson,方便json转换

    实现json转换,fastjson json json转换,可以帮助开发中涉及json格式处理的程序猿。

    java FASTJSON 解析复杂JSON实例源码

    Java中的Fastjson是一个高效、功能丰富的JSON库,由阿里巴巴开发并维护。它提供了一种简单的方式来序列化和反序列化Java对象,使得处理JSON数据变得轻而易举。在这个实例中,我们将深入探讨如何使用Fastjson来解析...

    很好用的JAVA类转JSON工具:FastJSON (2).pdf

    FastJSON是阿里巴巴开发的一款高性能的Java JSON库,它提供了快速且便捷的方式来处理JSON数据。FastJSON不仅支持将Java对象转换为JSON字符串,...如果你正在寻找一个方便、快速的JSON解决方案,FastJSON绝对值得考虑。

    fastJson用于格式的转换

    虽然FastJson在性能上表现出色,但在早期版本中曾出现过安全问题。因此,使用时应确保使用最新版本,以避免潜在的安全风险。 总结起来,FastJson作为一个强大的JSON库,因其高效、易用和丰富的特性,被广泛应用于...

    通过fastjson实现各种格式与json之间的转换

    通过fastjson实现了JavaBean,list,MAP,list等格式与json格式之间的转换,已经附带fastjson的包,包的版本为fastjson-1.1.36.jar

    fastjson-1.2.66_fastjson-1.2.66.jar_Fastjson_

    - **自动类型转换**:Fastjson在解析时会尝试自动转换类型,如将字符串转换为数字、日期等,简化了开发者的操作。 - **自定义转换器**:对于复杂的类型转换需求,Fastjson允许用户自定义`SerializerFeature`和`...

    阿里fastjson.jar

    8. 类型转换:Fastjson能智能识别并处理类型转换,如自动将数字字符串转换为整数或浮点数。 9. 安全性:Fastjson提供了一些安全配置,以防止JSON注入攻击。 10. 集成友好:Fastjson可以与Spring、MyBatis等框架...

    Volley。fastJson解析网络Json ,多线程显示图片,简单缓存图片,万能适配器,完美解决图片排序混乱问题,完美解决图片多次加载问题

    Volley是一个由Google开发的Android网络库,它专注于提供高效的网络请求处理,特别适合于短、快的HTTP请求。...万能适配器则使得数据绑定更加灵活,解决了图片排序和加载问题,提升了应用的整体性能。

    阿里巴巴fastjson的jar包

    4. **类型转换**:Fastjson可以自动处理类型转换,如将数字字符串转为Number类型,日期字符串转为Date等。 **四、安全性** Fastjson在安全方面也做了很多工作,包括SQL注入防护、XSS防护等,以防止恶意输入导致的...

    fastjson解析json的jar

    随着技术的发展,Fastjson不断优化和更新,解决新出现的问题,增加新的特性和功能,确保其在JSON处理领域的领先地位。 总结来说,Fastjson作为Java世界里解析JSON的利器,凭借其高效的性能和简洁的API,成为了广大...

    fastJSONjar包

    5. **类型转换**:FastJSON能够自动进行类型转换,如自动将字符串转化为数字或日期。 6. **JSONPath支持**:类似于XPath对XML的支持,JSONPath为JSON提供了一种查询语言,FastJSON内置了JSONPath,方便用户查询和...

    fastjson1.2.2.jar

    4. **自动类型转换**:Fastjson可以自动识别Java类型,无需手动设置类型信息,大大简化了编码工作。 5. **流式解析**:提供流式解析和生成,适合处理大文件,避免内存溢出问题。 三、Fastjson使用示例 1. **JSON...

    各个版本fastJson_jar包最新版

    4. **类型转换**:Fastjson在解析和生成过程中,能够自动进行类型转换,使得数据转换更加灵活。 5. **安全特性**:Fastjson提供了防范XXE(XML External Entity Attack)和反序列化攻击的安全策略,增强了安全性。 ...

    FastJson Json解析利器

    3. **类型自动转换**:FastJson支持自动类型转换,例如将JSON字符串中的数值、布尔值等自动转换为对应的Java类型。 4. **强大的映射机制**:FastJson支持Java Bean、Map、List等多种数据结构与JSON之间的映射,无需...

    高版本的fastjson-1.2.71解决安全漏洞.rar

    在标题提到的“高版本的fastjson-1.2.71解决安全漏洞”中,我们主要关注的是Fastjson如何通过更新到1.2.71版本来修复这些已知的安全问题。 Fastjson的安全漏洞通常涉及其自动类型识别机制。这个机制允许JSON字符串...

    使用fastjson实现对象和json串之间的相互转换的jar包

    Fastjson还支持更复杂的类型转换,例如集合、Map等,并且提供了强大的配置选项来处理日期、自定义类型等。此外,Fastjson的性能表现优秀,处理大量数据时依然能保持高效的运行速度。 在实际开发中,为了在项目中...

Global site tag (gtag.js) - Google Analytics