Как получить данные JSON из URL в Java? - PullRequest
2 голосов
/ 03 апреля 2012

Я проверил много страниц, но большинство уроков и сценариев возвращают код ошибки с этим типом вывода JSON. Итак, как бы я мог извлечь данные из этого JSON в Java?:

[
  {
    "user":{"id":"1","username":"user1"},
    "item_name":"item1",
    "custom_field":"custom1"
  },
  {
    "user":{"id":"2","username":"user2"},
    "item_name":"item2",
    "custom_field":"custom2"
  },
  {
    "user":{"id":"3","username":"user3"},
    "item_name":"item3",
    "custom_field":"custom3"
  }
]

Ответы [ 3 ]

1 голос
/ 03 апреля 2012

Если вы хотите использовать Gson, сначала вы объявляете классы для хранения каждого элемента и вложенных элементов:

public class MyUser {
  public String id;
  public String username;
}

public class MyElement {
  public MyUser user;
  public String item_name;
  public String custom_field;
}

Затем вы объявляете массив самого внешнего элемента (потому что в вашем случае объект JSONмассив JSON) и присвойте ему:

MyElement[] data = gson.fromJson (myJSONString, MyElement[].class);

Затем вы просто получаете доступ к элементам data.

. Важно помнить, что имена и типы атрибутов, которые выобъявление должно совпадать с теми, что указаны в строке JSON.например, "id", "item_name" и т. д.

0 голосов
/ 04 апреля 2012

Вы можете попробовать JSON Simplehttp://code.google.com/p/json-simple/

Пример:

JSONParser jsonParser = new JSONParser();
JSONArray jsonArray = (JSONArray) jsonParser.parse(jsonDataString);

for (int i = 0; i < jsonArray.size(); i++) {
    JSONObject obj = (JSONObject) jsonArray.get(i);
    //Access data with obj.get("item_name")
}

Просто будьте внимательны, проверяйте нулевые значения / будьте осторожны с приведением типов и тому подобное.

0 голосов
/ 03 апреля 2012

Если вы пытаетесь сериализовать / десериализовать json в Java, я бы порекомендовал использовать Джексона.http://jackson.codehaus.org/

После загрузки Джексона вы можете десериализовать строки json в объект, который соответствует объектам в JSON.

Джексон предоставляет аннотации, которые можно прикрепить к вашему классу, что делает десериализацию довольно привлекательной.простой.

...