Вопрос по java, json, jackson – Как преобразовать следующую строку JSON в объект Java?

40

Я хочу преобразовать следующую строку JSON в объект Java:

<code>String jsonString = "{
"libraryname":"My Library",
"mymusic":[{"Artist Name":"Aaron","Song Name":"Beautiful"},
{"Artist Name":"Britney","Song Name":"Oops I did It Again"},
{"Artist Name":"Britney","Song Name":"Stronger"}]}"
</code>

Моя цель - получить к нему легкий доступ, например:

<code>(e.g. MyJsonObject myobj = new MyJsonObject(jsonString)
myobj.mymusic[0].id would give me the ID, myobj.libraryname gives me "My Library").
</code>

Я слышал о Джексоне, но не уверен, как его использовать, чтобы соответствовать строке json, которая у меня есть, поскольку она не просто пары ключ-значение из-за «mymusic». Список участвует. Как я могу сделать это с Джексоном или есть какой-то более простой способ сделать это, если Джексон не самый лучший для этого?

возможный дубликатConvert a JSON string to object in Java? bummi

Ваш Ответ

5   ответов
2
Gson gson = new Gson();
JsonParser parser = new JsonParser();
JsonObject object = (JsonObject) parser.parse(response);// response will be the json String
YourPojo emp = gson.fromJson(object, YourPojo.class); 
Пожалуйста, добавьте некоторое описание, чтобы объяснить код, а также. Спасибо!
-6

да, вы можете попробовать json-lib-2.3-jdk15.jar скачать сhttp://sourceforge.net/projects/json-lib/files/latest/download

Почему эта библиотека? Как это используется? Решает ли это проблему OP? -1 только для того, чтобы добавить ссылку в качестве ответа.
93

Джексон может делать либо простые карты / списки:

ObjectMapper mapper = new ObjectMapper();
Map<String,Object> map = mapper.readValue(json, Map.class);

или более удобный JSON Tree:

JsonNode rootNode = mapper.readTree(json);

Кстати, нет никаких причин, по которым вы не могли бы на самом деле создавать классы Java и делать это (IMO) более удобно:

public class Library {
  @JsonProperty("libraryname")
  public String name;

  @JsonProperty("mymusic")
  public List<Song> songs;
}
public class Song {
  @JsonProperty("Artist Name") public String artistName;
  @JsonProperty("Song Name") public String songName;
}

Library lib = mapper.readValue(jsonString, Library.class);
Это массив JSON, поэтому он должен быть привязан к JavaCollection (лайкList) или массив (можно использовать типObject[].class). Или просто чтобыjava.lang.Object (будет типаList). Это будет работать просто отлично.
Я пытался отправить этот тип строки JSON с Джексоном, но он возвращает только нулевые значения,[{"id":62,"name":"projectname1","batchClassId":1283,"batchClassName":"sample_batchclass26","assetCount":0},{"id":8,"name":"projectname_tmp","batchClassId":1283,"batchClassName":"sample_batchclass26","assetCount":0}]
Используйте этот веб-сайт, чтобы конвертировать JSON в Java POJOjsonschema2pojo.org, Вы также можете снять флажки с геттеров и сеттеров и использовать lombok вместо этого, чтобы сделать POJO более понятными
Можете ли вы предоставить пример для прямого преобразования в объекты Java (после того, что вы уже указали в форме аннотаций)
12

http://code.google.com/p/google-gson/

С их сайта:

Gson gson = new Gson(); // Or use new GsonBuilder().create();
MyType target2 = gson.fromJson(json, MyType.class); // deserializes json into target2

Вам просто нужно создать класс MyType (конечно, переименованный) со всеми полями в строке json. Это может быть немного сложнее, когда вы делаете массивы, если вы предпочитаете выполнять весь анализ вручную (также довольно легко).http://www.json.org/ и загрузите исходный код Java для объектов анализатора Json.

это работает как шарм
0

http://code.google.com/p/google-gson/

& Quot; Gson - это библиотека Java, которую можно использовать для преобразования объектов Java в их представление JSON. Его также можно использовать для преобразования строки JSON в эквивалентный объект Java. Gson может работать с произвольными объектами Java, включая уже существующие объекты, исходный код которых у вас отсутствует. & Quot;

Проверьте примеры API:https://sites.google.com/site/gson/gson-user-guide#TOC-Overview Больше примеров:http://www.mkyong.com/java/how-do-convert-java-object-to-from-json-format-gson-api/

Похожие вопросы