起因
今日では、コードを見てみると、なぜ人々は、要素を削除するコードを書いていないが、それの要素がないましたか?
その後コードは、サブストリングが前の要素、親の結果や文字列の要素を取り除く取得します発見しました。
現象
元の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ときサブストリング修飾は、親配列の対応する変化を生じさせます。