Fastjsonプロローグ、反プログレッシブMapオブジェクトソート問題(文字列変換map、map変換文字列)

6114 ワード

背景
プロジェクトで出会ったfastjson json Objojojectについてstring乱序を変えて、stringはjson Object乱序の問題の解決案を回転します。
fastJson ises
問題の出所説明参照:https://github.com/alibaba/fastjson/issues/359 https://github.com/alibaba/fastjson/issues/954 【最終解答】
単ネストのMapプログレッシブと反シーケンスの問題
     JSONObject map=new JSONObject(true);//      true,    
      map.put("    ","1");
      map.put("    ","2");
      map.put("    ","3");
      map.put("    ","4");
      map.put("    ","5");
      OkhttpUtils.println(map.toString());//       ,    


        OkhttpUtils.println(map.toString());
        //        ,       !!!
        //JSONObject root=JSON.parseObject(map.toString());
         LinkedHashMap root=JSON.parseObject(map.toString(),new TypeReference>(){} );//     ,     map
       OkhttpUtils.println(JSON.toJSONString(root));
      //  map  ,        ,     JSONObject  ,     
      // JSONObject json=new JSONObject(true);
      // json.putAll(root);//  map  
       Collection lists=root.values();
      // Collection lists=json.values();//  new JSONObject     
      //  
      for (Object object : lists) {
       OkhttpUtils.println(object.toString());
     }
プログラム印刷:
45 】:{"    ":"1","    ":"2","    ":"3","    ":"4","    ":"5"}
【 48 】:{"    ":"1","    ":"2","    ":"3","    ":"4","    ":"5"}
【 51 】:{"    ":"1","    ":"2","    ":"3","    ":"4","    ":"5"}
上記のコードはインスタンスプログラムを参照してください。
https://github.com/Arisono/Gradle-demo/blob/master/src/main/java/com/gradle/java/utils/FastJsonUtil.java
組み合わせのmap json、入れ子のmap jsonは問題を刺し連ねます。
このような形式:
{"Format":"json","Name":"wwqqzz","Para":{"myuser":333,"mynum":"222", "mylist":[11,55,"33"]},"Reserved":{},"Type":"request","Version":"1.0"}
Feature.OrderedFieldは入れ子の多層mapを解決する時シーケンスの並べ替え問題を解決します。
 LinkedHashMap<String, Object> rootStr=JSON.parseObject(mapStr.toString(),new TypeReferenceString, Object>>(){} ,Feature.OrderedField);
連絡先:
  • ギthub:https://github.com/Arisono
  • QQ群:151909524
  • 参考文献:
  • fastjson並べ替えMap多層ネスティング変換自動ソート問題の最終解決策