Разбор JSON на Java - приложение для Android - PullRequest
0 голосов
/ 21 июля 2011

Мне нужна помощь с разбором строки json в Java Android Appl.

Текст файла JSON:

{"data":{"columns":["location_id","name","description","latitude","longitude","error","type","type_id","icon_media_id","item_qty","hidden","force_view"],"rows":[[2,"Editor","",43.076014654537,-89.399642451567,25,"Npc",1,0,1,"0","0"],[3,"Dow Recruiter","",43.07550842555,-89.399381822662,25,"Npc",2,0,1,"0","0"] [4,"Protestor","",43.074933,-89.400438,25,"Npc",3,0,1,"0","0"],[5,"State Legislator","",43.074868061524,-89.402136196317,25,"Npc",4,0,1,"0","0"],[6,"Marchers Bascom","",43.075296413877,-89.403374183615,25,"Node",22,0,1,"0","0"] [7,"Mary","",43.074997865584,-89.404967573966,25,"Npc",7,0,1,"0","0"]]},"returnCode":0,"returnCodeDescription":null}

Как получить значения: location_id, имя, широта, долгота. Спасибо, Михал.

Ответы [ 5 ]

13 голосов
/ 21 июля 2011

Используя ручной синтаксический анализ, вы можете реализовать его следующим образом:

            JSONArray  pages     =  new JSONArray(jsonString);
            for (int i = 0; i < pages.length(); ++i) {
                JSONObject rec = pages.getJSONObject(i);
                JSONObject jsonPage =rec.getJSONObject("page");
                String address = jsonPage.getString("url");
                String name = jsonPage.getString("name");
                String status =  jsonPage.getString("status");
}

в вашем случае обратите внимание, что ваши внешние данные относятся к типу JSONObject, а затем у вас есть JSONArray

mine json файл:

[{"page":{"created_at":"2011-07-04T12:01:00Z","id":1,"name":"Unknown Page","ping_at":"2011-07-04T12:06:00Z","status":"up","updated_at":"2011-07-04T12:01:00Z","url":"http://www.iana.org/domains/example/","user_id":2}},{"page":{"created_at":"2011-07-04T12:01:03Z","id":3,"name":"Down Page","ping_at":"2011-07-04T12:06:03Z","status":"up","updated_at":"2011-07-04T12:01:03Z","url":"http://www.iana.org/domains/example/","user_id":2}}] 

обратите внимание, что мой начинается с [, что означает массив, но ваш из {, а затем у вас есть [массив внутри.Если вы запустите его с помощью отладчика, вы сможете точно увидеть, что находится внутри ваших объектов json.

Существуют также лучшие подходы, такие как:

  1. Джексон
  2. Джексон-младший (легкий Джексон)
  3. GSON

Всеих можно использовать для преобразования объектов Java в их представление JSON.Его также можно использовать для преобразования строки JSON в эквивалентный объект Java.

3 голосов
/ 21 июля 2011

Прежде всего, вам нужно знать о разборе Json в Android, поэтому сначала прочтите это: JSONObject , в этом классе вы увидите следующие методы:

  1. getJSONArray (String name)
  2. getJSONObject (String name)
  3. getString (String name)

и многие другие методы, которые будут использоваться при реализации анализа JSON вandroid.

Обновление:

И если вы все еще в замешательстве, нажмите на ссылку ниже, чтобы получить множество примеров в Интернете: Разбор JSON Android

0 голосов
/ 21 июля 2011

В этом содержится полный пример вашего дела.

0 голосов
/ 21 июля 2011

Если вы хотите легко перемещаться по дереву Json, вы можете использовать JSON Path, то есть систему запросов, аналогичную XPath to XML, которую вы можете использовать для выбора некоторых элементов в дереве JSON с помощью текстовых выражений.

http://code.google.com/p/json-path/ Это хорошая реализация

Если вы просто имеете в виду, что хотите разобрать JSon, вы можете использовать Gson из Google (что, я думаю, совместимо с Android).

0 голосов
/ 21 июля 2011

Вам необходимо использовать GSON lib http://code.google.com/p/google-gson/

Примеры объектов

class BagOfPrimitives {
  private int value1 = 1;
  private String value2 = "abc";
  private transient int value3 = 3;
  BagOfPrimitives() {
    // no-args constructor
  }
}

(Сериализация)

BagOfPrimitives obj = new BagOfPrimitives();
Gson gson = new Gson();
String json = gson.toJson(obj);  
==> json is {"value1":1,"value2":"abc"}

Обратите внимание, что вы не можете сериализовать объекты сциклические ссылки, поскольку это приведет к бесконечной рекурсии.

(десериализация)

BagOfPrimitives obj2 = gson.fromJson(json, BagOfPrimitives.class);   
==> obj2 is just like obj
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...