2016-11-06 4 views
0

У меня есть большой файл со многими объектами JSON, похожий на следующее. Мне нужно разобрать все, чтобы получить элементы «purchase_together» в виде массива, используя org.json library. У меня возникли проблемы с доступом к чему-либо, вложенному в «родственный».Разбор JSON в Java Использование org.json

Каков требуемый код для извлечения «purchase_together» в качестве списка?

{ 
    "asin": "11158732", 
    "title": "Girls Ballet Tutu Zebra Hot Pink", 
    "price": 3.17, 
    "imUrl": "http://ecx.images-amazon.com/images/I/51fAmVkTbyL._SY300_.jpg", 
    "related": 
    { 
    "also_bought": ["L00JHONN1S", "B002BZX8Z6"], 
    "also_viewed": ["F002BZX8Z6", "B00JHONN1S", "B008F0SU0Y", "B00D23MC6W", "B00AFDOPDA"], 
    "bought_together": ["D202BZX8Z6"] 
    }, 
    "salesRank": {"Toys & Games": 211836}, 
    "brand": "Coxlures", 
    "categories": [["Sports & Outdoors", "Other Sports", "Dance"]] 
} 

Вот моя попытка (Обратите внимание, что это в пределах MapReduce программы так что некоторые строки могут показаться из контекста.):

JSONObject object = new JSONObject(sampleText); //sampleText is json that has been split by line 
JSONArray boughtTogether = new JSONArray(object.getJSONArray("bought_together")); 
+2

Пожалуйста, напишите любой образец кода, если вы написали! – iNan

ответ

1

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

//this will be your json object that contains and convert your string to jsonobject 
//if you have json object already skip this. 
JSONObject yourJSON = new JSONObject(targetString); 

//getting the "related" jsonObject 
JSONObject related = yourJSON.getJSONObject("related"); 

//getting the "bought_together" as an jsonArray and do what you want with it. 
//you can act with jsonarray like an array 
JSONArray bought_together = related.getJSONArray("bought_together"); 


//now if you run blow code 

System.out.print(bought_together.getString(0)); 

//output is : D202BZX8Z6 

------- обновление в соответствии с обновит вопрос ------ вы должны изменить свой код так:

JSONObject object = new JSONObject(sampleText); //sampleText is json that has been split by line 

JSONObject related = object.getJSONObject("related"); 

JSONArray boughtTogether = related.getJSONArray("bought_together"); 

------- обновление -------

я думаю, что вам нужно на данный момент (это не формальность, все они разница)

  • каждая вещь в {}, то они будут JSONObject и отношение является ключевым и значение как:

    { «имя»: «али»}

    это JSONObject и значение ключа " имя "является ali и мы называем это подобным:

    myJsonObject.getString (" name ");

  • каждая вещь в [], то они будут JSONArray и отношение индекс и значение как:

    [ «али»]

    это является JsonArray значение индекса 0 является али ищем его имя
    подобный:

    myJsonArray.getString (0);

так в вашем случае:

  1. ваш общий объект является JSONObject
  2. значение "связанных с" ключ еще JSONObject
  3. значение ключа "bought_together" (который находится внутри значения {jsonobject} "related" key) является JSONArray
+0

Хмм, я не понимаю, почему это не работает. Я все еще получаю 'Ошибка: org.json.JSONException: JSONObject [" related "] not found' –

+0

вы можете протестировать новый и сообщить результат? –

+0

Я пробовал обновленный код и по-прежнему получал ту же ошибку 'Ошибка: org.json.JSONException: JSONObject [" related "] not found'.Вот код [gist] (https://gist.github.com/anonymous/9ec90dff79e824361ea5892aa9b936b5) кода, который я использовал. –

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