假设我们有一个如下所示的JSON结构:
www
我们匹配的java类如下:
<naming-strategy-map />
解析代码如下:
{
"field1": "val1",
"field2": "v2",
"f3": "v3",
"f4": "v4",
"arrayOfStuff": [
{
"f5": "v5",
....
"f10": "v10"
}
],
"attributes": [
{"att1": "att1"},
{"att2": "attr2"},
{"att3": "att3"}
],
"options": [
"ignoreMismatchFile"
]
}
我们尝试了不同的方法来实现此目的,最初我们尝试将属性设置为public class Message {
@IsUniqueId
private String field1; //
private String field2;
private String field3;
private String field4;
private List<AnotherObject> f5;
@JsonProperty("attributes")
private LinkedHashMap<String, String> attributes;
private List<String> options;
....
}
,但也没有用(我们基于Another answer切换到Map-不起作用)>
我们的目标是保持属性的动态的,不是硬编码的属性列表。
protected Message loadSavedMessageAsMessageObject(String path) throws IOException {
File file = ResourceUtils.getFile(path);
if (file.exists()) {
ObjectMapper mapper = this.getObjectMapper();
return mapper.readValue(file, Message.class);
}
return null;
}
类的外观如下:
private List<MessageAttribute> attributes;
我们目前得到的例外是:
MessageAttribute
答案 0 :(得分:2)
与以上JSON对应的Message
POJO格式错误,我做了几处更改attributes
应该是List of Map
,并且AnotherObject
的列表应该指向
arrayOfStuff
public class Message {
@IsUniqueId
private String field1; //
private String field2;
private String field3;
private String field4;
private List<AnotherObject> arrayOfStuff; //or you can have List<Map<String,String>> arrayOfStuff
@JsonProperty("attributes")
private List<LinkedHashMap<String, String>> attributes; // this is list of map objects
private List<String> options;
....
}