2014-04-29 2 views
0

У меня есть строка JSON и U хотите получить имя и добавить поля. Я пытался использовать несколько библиотек и следить за многими учебниками, но не увенчался успехом.разбор JSON в JAVA не может получить доступ к значению

я вещь моя проблема заключается в том, что у меня есть несколько массивов вместе ...

inputLine = 
{"posts":[ 
    {"post":{ 
     "name":"name1", 
     "add":"add1"}}, 
    {"post":{ 
     "name":"name2", 
     "add":"add2"}} 
    ] 
} 
JSONObject obj_posts = new JSONObject(inputLine); 
JSONArray menuitemArray = obj_posts.getJSONArray("posts"); 
JSONObject obj_post = new JSONObject(menuitemArray.getJSONObject(0).toString()); 
JSONObject menuitem = obj_post.getJSONObject("post"); 
JSONArray obj_post1 = menuitem.names(); 

На данный момент я могу получить доступ только имя ключа и добавить, а не значение.

+2

Вы получаете определенную ошибку? (Я отмечаю, что ваша 'inputLine' не объявлена ​​как' String', и если бы это было так, она не удалялась должным образом из кавычек ...) – Makoto

+0

Вам нужно пройти еще один уровень в своем коде для извлечения значения name и add. Но это действительно очень грубый способ разбора json. Я бы рекомендовал вам написать класс java для представления вашей структуры json, а затем использовать синтаксический анализатор, такой как jackson, для немедленного перехода к json-объекту json. –

+3

Не используйте 'новый JSONObject' второй раз. Вам не нужно разбирать «внутренний JSON». –

ответ

1
JSONObject obj_posts = new JSONObject(inputLine); 
JSONArray menuitemArray = obj_posts.getJSONArray("posts"); 
JSONObject obj_post = menuitemArray.getJSONObject(0); 
JSONObject menuitem = obj_post.getJSONObject("post"); 
String postName = menuItem.getString("name"); 
String postAdd = menuItem.getString("add"); 
0

В приведенной ниже код должен работать:

System.out.println(menuitem.get(obj_post1.getString(0)));//Output name1 
    System.out.println(menuitem.get(obj_post1.getString(1)));//Output add1 
0

Вы должны импортировать "org.json.JSONArray", "org.json.JSONException", "org.json.JSONObject"

Также выбрасывает исключение JSONException.

String obj_post1_name = ""; 
String obj_post1_add = ""; 
String obj_post2_name = ""; 
String obj_post2_add = ""; 
String inputLine = 
     " {\"posts\":[{\"post\":{\"name\":\"name1\",\"add\":\"add1\"}},{\"post\":{\"name\":\"name2\",\"add\":\"add2\"}}]}"; 

     JSONObject obj_posts = new JSONObject(inputLine); 
     JSONArray menuitemArray = obj_posts.getJSONArray("posts"); 
     JSONObject obj_post1 =(menuitemArray.getJSONObject(0)); 
     JSONObject obj_post2 =(menuitemArray.getJSONObject(1)); 
     JSONObject menuitem = obj_post1.getJSONObject("post"); 
     JSONObject menuitem2 = obj_post2.getJSONObject("post"); 
     obj_post1_name= menuitem.getString("name"); 
     obj_post1_add= menuitem.getString("add"); 
     obj_post2_name= menuitem2.getString("name"); 
     obj_post2_add= menuitem2.getString("add"); 

или вы можете использовать цикл после:

JSONArray menuitemArray = obj_posts.getJSONArray("posts"); 
JSONObject obj_posts; 
JSONObject menuitem; 
for(int i=0;i<menuitemArray.length();i++){ 
    obj_posts= menuitemArray.getJSONObject(i); 
    menuitem = obj_post1.getJSONObject("post"); 
    menuitem.getString("name"); 
    menuitem.getString("add"); 
} 
Смежные вопросы