Для разбора JSON как this twitter API users/show
response Я использую библиотеки Jackson и Gson Java в качестве кандидатов для выполнения этой работы. Меня интересует только небольшое подмножество свойств JSON, поэтому Гсн был хорош из-за его очень сжатого синтаксиса, но я теряю внутреннюю битву, чтобы продолжать использовать Gson, поскольку Джексон уже используется в другом месте нашего приложения, и он документировал лучшая производительность (которую я признаю, являются и хорошими причинами, чтобы потерять Gson).Jackson vs 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.
Таким образом, после этого долго наматывается объяснения, есть ли способ я могу использовать Джексон с меньшим количеством кода, чем показано выше?
Еще одно замечание: вы определенно не хотите, чтобы создать новую ObjectMapper каждый раз - либо использовать синглтон, или Guice внедрить экземпляр. К счастью, основную проблему также ответили ниже! – StaxMan
@StaxMan Yup, был только для полноты образца кода. – markdsievers