Половина моей проблемы - не зная точных условий для поиска ответа. Я верю Я имею дело с тем, что называется "плоским" или "развернутым" массивом json с нижележащим узлом "members", так как это будет работать, если для каждого из элементов есть элемент "member:" «члены» базовых узлов свойств, но их нет.
Я получаю JSON (я не могу контролировать формат), который выглядит следующим образом:
{
"id" : "1",
"context" :
{
"id" : "123,
"title" : "My Title"
},
"members": [
{
"prop1" : { },
"prop2" : "123",
"propArray1" : [ "Value1", "Value2" ],
"prop3" : "xyz",
"prop4" : "123"
},
{
"prop1" : { },
"prop2" : "456",
"propArray1" : [ "Value1", "Value2" ],
"prop3" : "abc",
"prop4" : "456"
}
] }
Мой POJO (минус простой получает / устанавливает):
@JsonAutoDetect
public class MyPojo {
@JsonProperty
private String id;
@JsonProperty
private Context context;
@JsonProperty("members")
private List<Member> members = new ArrayList<>();
@JsonAutoDetect
public class Context {
public Context() {}
@JsonProperty
private String id;
@JsonProperty
private String title;
}
@JsonAutoDetect
public class Member {
public Member() {}
@JsonProperty
private String prop1;
@JsonProperty
private String prop2;
@JsonProperty
private List<String> propArray1 = new ArrayList<>();
@JsonProperty
private String prop3;
@JsonProperty
private String prop4;
@JsonProperty
private String prop5;
}
public List<Member> getMembers() {
return members;
}
public void setMembers(List<Member> members) {
this.members = members;
}
}
Я пробовал GSON:
new Gson().fromJson(jsonEntity, MyPojo.class);
returns:
java.lang.IllegalStateException: Expected a string but was BEGIN_OBJECT
Я пробовал Джексона:
new ObjectMapper().readValue(jsonEntity, MyPojo.class);
throws:
org.codehaus.jackson.map.JsonMappingException: No suitable constructor found for type [simple type, class MyPojo$Member]: can not instantiate from JSON object (need to add/enable type information?)
at [Source: java.io.StringReader@5c6e5b53; line: 10, column: 3] (through reference chain: MyPojo["members"])
Я не думаю, что информация типа «добавить / включить» является релевантным предупреждением, и у меня есть конструктор по умолчанию.
Я искал десятки постов десериализации json, и этот, похоже, похож на этот, но мне нужно получить весь объект Json, а не просто его часть ... и я попытался просто извлечь массив членов, и это не так т работа.
Невозможно десериализовать JSON в POJO