2014-12-04 6 views
3

Так что я какой-то код, который может отправить это:Получение объекта Json внутри объекта Json в Java

{"id":1, 
    "method":"addWaypoint", 
    "jsonrpc":"2.0", 
    "params":[ 
    { 
     "lon":2, 
     "name":"name", 
     "lat":1, 
     "ele":3 
    } 
    ] 
    } 

Сервер получает этот объект JSON в виде строки с именем «clientstring»:

JSONObject obj = new JSONObject(clientstring); //Make string a JSONObject 
String method = obj.getString("method"); //Pulls out the corresponding method 

Теперь я хочу получить значение «params» {«lon»: 2, «name»: «name», «lat»: 1, «ele»: 3} точно так же, как я получил метод". однако оба они дали мне исключения:

String params = obj.getString("params"); 

и

JSONObject params = obj.getJSONObject("params"); 

Я действительно в недоумении, как я могу хранить и использовать { «LON»: 2, «Имя»:» имя "," lat ": 1," ele ": 3} без получения исключения, это законный JSON, но он не может быть сохранен как JSONObject? Я не понимаю.

Любая помощь ОЧЕНЬ оценена, спасибо!

+1

Я никогда не использовал 'JSONObject' в Java .. Я использовал' плей-json', но кажется, что 'params' является массивом из-за' [ '. Можете ли вы попробовать 'JSONArray - params = obj.getJSONArray (« params »)' – benji

+0

Спасибо, я только что понял, что это была проблема все это время, такая незначительная вещь, которую нужно упускать! Спасибо – Exception

ответ

2

params в вашем случае неJSONObject, но это JSONArray.

Итак, все, что вам нужно сделать, это сначала получить JSONArray, а затем извлечь первый элемент этого массива как JSONObject.

JSONObject obj = new JSONObject(clientstring); 
JSONArray params = obj.getJsonArray("params"); 
JSONObject param1 = params.getJsonObject(0); 
+0

@Exception взгляните на [это] (http://ankursinghal86.blogspot.in/2014/11/json-to-hashmap-parsing-json-string.html), может помочь вам –

2

Как попробовать, как этот

JSONObject obj = new JSONObject(clientstring); 
    JSONArray paramsArr = obj.getJSONArray("params"); 


    JSONObject param1 = paramsArr.getJSONObject(0); 

    //now get required values by key 
    System.out.println(param1.getInt("lon")); 
    System.out.println(param1.getString("name")); 
    System.out.println(param1.getInt("lat")); 
    System.out.println(param1.getInt("ele")); 
1

Здесь "Титулы" не является объектом, а массив. Таким образом, вы должны проанализировать с помощью:

JSONArray jsondata = obj.getJSONArray("params"); 

for (int j = 0; j < jsondata.length(); j++) { 
    JSONObject obj1 = jsondata.getJSONObject(j); 
    String longitude = obj1.getString("lon"); 
    String name = obj1.getString("name"); 
    String latitude = obj1.getString("lat"); 
    String element = obj1.getString("ele"); 
    } 
Смежные вопросы