Для синтаксического анализа JSON, например этого твиттер-API users/show
ответ Я использовал библиотеки Java Джексона и Джсона в качестве кандидатов для выполнения этой работы.Меня интересует только небольшое подмножество свойств JSON, поэтому Gson был хорош из-за его очень лаконичного синтаксиса, но я проигрываю внутреннюю битву за то, чтобы продолжать использовать Gson, поскольку Джексон уже используется в других местах нашего приложения, и он задокументироваллучшая производительность (и я признаю, что это и есть веские причины потерять Gson).
Для POJO типа
public class TwitterUser {
private String id_str;
private String screen_name;
public String getId_str() {
return id_str;
}
public void setId_str(String id_str) {
this.id_str = id_str;
}
public String getScreen_name() {
return screen_name;
}
public void setScreen_name(String screen_name) {
this.screen_name = screen_name;
}
}
Единственный код для Gson, необходимый для построения этой строки, - одна строка,
TwitterUser user = new Gson().fromJson(jsonStr, TwitterUser.class);
Это довольно мило для меня;хорошо масштабируется и выбирает свойства, которые вы хотите.С другой стороны, Джексон немного более трудоемок для создания POJO из выбранных полей.
Map<String,Object> userData = new ObjectMapper().readValue(jsonStr, Map.class);
//then build TwitterUser manually
или
TwitterUser user = new ObjectMapper().readValue(jsonStr, TwitterUser.class);
//each unused property must be marked as ignorable. Yikes! For 30 odd ignored fields thats too much configuration.
Так что после этого длинного объяснения, есть ли способ, которым я могуиспользовать Джексона с меньшим количеством кода, чем показано выше?