Скажем, у нас есть структура JSON, которая выглядит следующим образом:
{
"field1": "val1",
"field2": "v2",
"f3": "v3",
"f4": "v4",
"arrayOfStuff": [
{
"f5": "v5",
....
"f10": "v10"
}
],
"attributes": [
{"att1": "att1"},
{"att2": "attr2"},
{"att3": "att3"}
],
"options": [
"ignoreMismatchFile"
]
}
И наш соответствующий класс Java выглядит следующим образом:
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;
....
}
Код синтаксического анализа выглядит следующим образом:
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
:
public class MessageAttribute {
private String key;
private String value;
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
Исключение, которое мы в настоящее время получаем: