0

私のjsonは次のようになりますが、より多くのノード/子があります:

[{"text":"Millions", "children":[
{"text":"Dinosaur", "children":[{"text":"Stego"}]}, 
{"text":"Dinosaur", "children": [{"text":"T-REX"}]}]}]

すべての子を再帰的に調べて、名前/値 (「チェック済み」: false) のペアを json に追加して、次のようにしようとしています。

[{"text":"Millions", "checked": false, "children":[
{"text":"Dinosaur", "checked": false, "children":[{"text":"Stego", "checked": false,}]}, 
{"text":"Dinosaur", "checked": false, "children": [{"text":"T-REX", "checked": false,}]}]}]

これまでに思いついたのは次のとおりです。

JSONArray jArrayChecked = new JSONArray();

//This traverses through the nodes
public void addChecked(JSONArray ja){
  for(JSONObject jo : ja){
    if(jo.has("children")
      addChecked(jo.get("children");

    jo.put("checked", false);
    //This part is incorrect
    jArrayChecked.put(jo);
  }
}

ノード構造をそのまま維持しながら、各ノードに名前と値のペアを適切に追加するにはどうすればよいですか?

4

1 に答える 1

1

問題がわかりません。これは私のために働く

public static void addChecked(JSONArray ja) throws JSONException {
    for (int i = 0; i < ja.length(); i++) {
        JSONObject jo = (JSONObject) ja.get(i);
        if (jo.has("children"))
            addChecked((JSONArray) jo.get("children"));

        jo.put("checked", false);
    }
}

public static void main(String[] args) throws Exception {
    String jsonString = "[{\"text\":\"Millions\", \"children\":[{\"text\":\"Dinosaur\", \"children\":[{\"text\":\"Stego\"}]}, {\"text\":\"Dinosaur\", \"children\": [{\"text\":\"T-REX\"}]}]}]";
    JSONArray jsonArray = new JSONArray(jsonString);
    System.out.println(jsonString);
    addChecked(jsonArray);
    System.out.println(jsonArray);
}

印刷します

[{"text":"Millions", "children":[{"text":"Dinosaur", "children":[{"text":"Stego"}]}, {"text":"Dinosaur", "children": [{"text":"T-REX"}]}]}]
[{"text":"Millions","children":[{"text":"Dinosaur","children":[{"text":"Stego","checked":false}],"checked":false},{"text":"Dinosaur","children":[{"text":"T-REX","checked":false}],"checked":false}],"checked":false}]

基になる s を直接操作しているJSONObjectため、変更を new に反映する必要はありませんJSONArray


私が提案したソリューションは、提供される JSON の形式に大きく依存しています。JSON が変更された場合は、そのことに注意してください。

于 2013-09-19T20:17:10.767 に答える