2015-04-18 2 views
1

Хорошо, это может ввести в заблуждение.JSONArray теряется при кодировании

Я пытаюсь добавить jsonarray в jsonobject, когда происходит определенная вещь. В настоящее время, файл в формате JSON выглядит немного как этот

{ 
    "sweg":true, 
    "bans":[ 
    { 
     "1":[ 
     { 
      "reason":"Hacking" 
     } 
     ] 
    } 
    ], 
    "kicks":[ 
    { 
     "1":[ 
     { 
      "reason":"testing" 
     } 
     ] 
    } 
    ] 
} 

Кроме того, извините, если форматирование файла плохо. Я должен был вручную разместить его.

Следующий запуск, это должно выглядеть немного как

{ 
    "sweg":true, 
    "bans":[ 
    { 
     "1":[ 
     { 
      "reason":"Hacking" 
     } 
     ] 
    } 
    ], 
    "kicks":[ 
    { 
    "1":[ 
     { 
     "reason":"testing" 
     } 
    ], 
    "2":[ 
     { 
     "reason":"meow" 
     } 
    ] 
    } 
] 
} 

Когда я говорю, должен, я имею в виду то, что задумано. Добавляется JSONArray «2» под «kicks».

Но что получается, это:

{ 
    "sweg":true, 
    "bans":[ 
    { 
     "1":[ 
     { 
      "reason":"Hacking" 
     } 
     ] 
    } 
    ], 
"kicks":[ 
    { 
    "2":[ 
     { 
     "reason":"meow" 
     } 
    ] 
    } 
] 
} 

Что, в конечном счете теряется в конце концов, это «1» массив под «ногами»

EDIT: забыл код, вот оно:

public static void main(String[] args) { 
    JSONParser jsonParser = new JSONParser(); 
    JSONObject jsonObject = new JSONObject(); 
    try { 
     Object obj = jsonParser.parse(new FileReader("testing.json")); 
     jsonObject = (JSONObject) obj; 
    } catch (Exception ex) { 
     ex.printStackTrace(); 
    } 
    JSONObject data = new JSONObject(); 
    jsonObject.put("data", data); 
    JSONArray jsonArray11 = new JSONArray(); 
    jsonObject.put("kicks", jsonArray11); 
    JSONObject placeHolder2 = new JSONObject(); 
    jsonArray11.add(placeHolder2); 
    JSONArray kick2 = new JSONArray(); 
    placeHolder2.p(2, kick2); 
    JSONObject jsonObject1 = new JSONObject(); 
    kick2.add(jsonObject1); 
    jsonObject1.put("reason", "meow"); 
    try { 
     BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(new File("testing.json"), false)); 
     bufferedWriter.write(jsonObject.toJSONString()); 
     bufferedWriter.flush(); 
     bufferedWriter.close(); 
    } catch (IOException ex) { 
     ex.printStackTrace(); 
    } 
} 
+0

Из примеров я могу сказать, что вместо того, чтобы добавить его к JSon массива вы добавляете все это в качестве нового объекта JSON. просто отправьте код, чтобы я мог больше помочь. –

+0

Глупо меня, добавлю. –

+0

уже «пинает» в «данных», или вы только что создаете его в этом фрагменте. –

ответ

0

у нас нет достаточной информации, но это звучит, как вы просто хотите добавить данных в kicks. Вы можете сделать это так:

$json = '{ 
    "sweg":true, 
    "bans":[ 
    { 
     "1":[ 
     { 
      "reason":"Hacking" 
     } 
     ] 
    } 
    ], 
    "kicks":[ 
    { 
    "1":[ 
     { 
     "reason":"testing" 
     } 
    ] 
    } 
] 
}'; 
$jsonObj = json_decode($json); 

$meow = '[ 
     { 
     "reason":"meow" 
     } 
    ]'; 
$meowObj = json_decode($meow); 

/* This will count the fields in kicks[0], increment, and create a few field 
    and name the new field the resulting number, then insert the new object. */ 
$jsonObj->kicks[0]->{count((array)$jsonObj->kicks[0])+1} = $meowObj; 

print_r($jsonObj); 

Это приведет:

stdClass Object 
(
    [sweg] => 1 
    [bans] => Array 
     (
      [0] => stdClass Object 
       (
        [1] => Array 
         (
          [0] => stdClass Object 
           (
            [reason] => Hacking 
           ) 

         ) 

       ) 

     ) 

    [kicks] => Array 
     (
      [0] => stdClass Object 
       (
        [1] => Array 
         (
          [0] => stdClass Object 
           (
            [reason] => testing 
           ) 

         ) 

        [2] => Array 
         (
          [0] => stdClass Object 
           (
            [reason] => meow 
           ) 
         ) 
       ) 
     ) 
) 
+0

Не java, но я, возможно, попытаюсь это понять. –

Смежные вопросы