2015-07-17 7 views
1

Мне нужна помощь при разборе строки JSON в Android. Я хочу, чтобы получить координаты «geoJson1» в этой строке:Parse JSON в Android

{ 
    "id": "36", 
    "place": "restaurant", 
    "geoJson1": "{\"type\":\"MultiLineString\",\"coordinates\":[[[5441638.1188548915,6352789.023657421],[5433468.392072764,6353121.617942605]]]}", 
    "location": [ 
     { 
      "geoJson": "{\"type\":\"Point\",\"coordinates\":[5433452.050000737,6352982.539981681]}", 
      "number": 8691 
     }, 
     { 
      "geoJson": "{\"type\":\"Point\",\"coordinates\":[5433379,6354829.689981211]}", 
      "number": 3487 
     } 
    ], 
    "long": "", 
    "geoJson2": "{\"type\":\"MultiLineString\",\"coordinates\":[[[5433468.392072764,6353121.617942605],[5441638.1188548915,6352789.023657421]]]}" 
} 

То, что я пытаюсь сделать это, но я получаю ошибку синтаксического анализа:

   JSONObject jsonObj = new JSONObject(json); 
      JSONObject geoJson= jsonObj.getJSONObject("geojson1"); 
      JSONArray coordinates= (JSONArray) geoJsonVuelta.get("coordinates"); 

Не могли бы вы мне помочь пожалуйста? Спасибо!

+0

первую очередь, пожалуйста, исправьте строку JSON, его не действует –

+0

Что такое ошибка ?. Что такое 'geoJsonVuelta' ??. Думаю, это должно быть «geoJson». – Raghunandan

+0

Вы пробовали проверить строку JSON через http://jsonlint.com/? – ksuralta

ответ

0

Вы можете легко разобрать json с помощью библиотеки jackson. Там вам просто нужно создать POJO ожидаемого выходного класса и использовать объект mapper, вы можете получить непосредственно весь объект, вам не нужно беспокоиться о разборе строк за строкой, который будет управляться библиотекой jackson, вам просто нужно создать класс POJO с аннотацией тега сервера.

Here образец, который поможет вам в использовании.

Here больше информации о jackson и библиотеке доступно.

+0

Спасибо, я буду читать о Jackson – Nico812

2

Трудно сказать, потому что вы не говорите, что такое ошибка или где оно происходит, а ваш код является неполным.

Но ...

Похоже, что вы пытаетесь получить объект GeoJSON как объект непосредственно, когда на самом деле в формате JSON, что вы публикуемый ("geoJson":"{\"type\":\"MultiLineString\", - усеченный), GeoJSON является строкой. Попытайтесь получить его как String и перефразируйте его как новый объект JSON.

new JSONObject(jsonObj.getString("geojson"));

+0

Спасибо, я попробую! – Nico812

+0

@ Nico812 это сработало? –