JSONObject削除要素 - ストリングが削除され、文字列の父は削除されます

起因

今日では、コードを見てみると、なぜ人々は、要素を削除するコードを書いていないが、それの要素がないましたか?
その後コードは、サブストリングが前の要素、親の結果や文字列の要素を取り除く取得します発見しました。

現象

元のJSON文字列は次のようである:{ "" { "A1": "VA1"、 "A2": "VA2"}}

    String jsonString = "{\"a\":{\"a1\":\"va1\",\"a2\":\"va2\"}}";
    com.alibaba.fastjson.JSONObject json= com.alibaba.fastjson.JSONObject.parseObject(jsonString);    
    com.alibaba.fastjson.JSONObject aJson = json.getJSONObject("a");
    aJson.remove("a1");
    System.out.println(json.toJSONString());

あなたは上記のコードの出力結果は、それが何であるかだと思いますか?
正味の効果は:{ "" { " A2": "VA2"}}

説明

キーと値のペアを保存するハッシュマップまたはJSONのLinkedHashMapを使用してJSONObjectにfastjsonは、getObjectメソッド(文字列キー)が実際にGET(文字列キー)メソッドのマップを起動され、返されたオブジェクトは、基準オブジェクトのマップです。
これは、次の質問を意味します。

    Map<String, List<String>> map = new HashMap<>();
    List<String> list = new ArrayList<>();
    list.add("1");
    list.add("2");
    list.add("3");
    
    map.put("aa", list);

    List<String> aaList = map.get("aa");
    aaList.remove(0); 

    List<String> aList = map.get("aa");
    aList.forEach(System.out::println);
            

変更されたオブジェクトは、地図オブジェクトが変更される場合、取得された、したがってfastjson JSONObjectときサブストリング修飾は、親配列の対応する変化を生じさせます。

おすすめ

転載: www.cnblogs.com/Lenbrother/p/12172670.html