#java #android #json #gson #jackson
#java #Android #json #gson #джексон
Вопрос:
Я смог успешно проанализировать приведенную ниже строку JSON в Android, используя JSONObject и JSONArray. Не удалось добиться того же результата с помощью GSON или Jackson. Может ли кто-нибудь помочь мне с фрагментами кода, включая определения POJO, для анализа этого с помощью GSON и Jackson?
{
"response":{
"status":200
},
"items":[
{
"item":{
"body":"Computing"
"subject":"Math"
"attachment":false,
}
},
{
"item":{
"body":"Analytics"
"subject":"Quant"
"attachment":true,
}
},
],
"score":10,
"thesis":{
"submitted":false,
"title":"Masters"
"field":"Sciences",
}
}
Комментарии:
1. Может быть, вы могли бы включить определения POJO, которые вы пробовали, чтобы дать представление о том, что могло пойти не так? Основная идея состоит в том, чтобы просто сопоставить структуры.
2. Кроме того, при публикации вопроса я рекомендую приложить усилия, чтобы убедиться, что любой код или примеры JSON являются действительными и правильными. Пример JSON в исходном вопросе недействителен и оставляет людей, которые могли бы помочь или извлечь уроки из этой темы, гадать о том, что к чему. jsonlint.com может использоваться для быстрой и простой проверки JSON.
Ответ №1:
Ниже приведены простые примеры использования Gson и Jackson для десериализации / сериализации JSON (аналогично недопустимому JSON в исходном вопросе) в / из соответствующей структуры данных Java.
JSON — файл:
{
"response": {
"status": 200
},
"items": [
{
"item": {
"body": "Computing",
"subject": "Math",
"attachment": false
}
},
{
"item": {
"body": "Analytics",
"subject": "Quant",
"attachment": true
}
}
],
"score": 10,
"thesis": {
"submitted": false,
"title": "Masters",
"field": "Sciences"
}
}
Соответствующая структура данных Java:
class Thing
{
Response response;
ItemWrapper[] items;
int score;
Thesis thesis;
}
class Response
{
int status;
}
class ItemWrapper
{
Item item;
}
class Item
{
String body;
String subject;
boolean attachment;
}
class Thesis
{
boolean submitted;
String title;
String field;
}
Пример Джексона:
import java.io.File;
import org.codehaus.jackson.annotate.JsonAutoDetect.Visibility;
import org.codehaus.jackson.map.ObjectMapper;
public class JacksonFoo
{
public static void main(String[] args) throws Exception
{
ObjectMapper mapper = new ObjectMapper();
mapper.setVisibilityChecker(
mapper.getVisibilityChecker()
.withFieldVisibility(Visibility.ANY));
Thing thing = mapper.readValue(new File("input.json"), Thing.class);
System.out.println(mapper.writeValueAsString(thing));
}
}
Пример Gson:
import java.io.FileReader;
import com.google.gson.Gson;
public class GsonFoo
{
public static void main(String[] args) throws Exception
{
Gson gson = new Gson();
Thing thing = gson.fromJson(new FileReader("input.json"), Thing.class);
System.out.println(gson.toJson(thing));
}
}