【发布时间】:2021-09-23 17:54:57
【问题描述】:
有人可以帮助我,我如何反序列化以下我无法更改的 JSON? 我正在使用 Jackson 进行序列化。
{
"columns": [
{
"header": "Heading1",
},
{
"header": "Heading2",
}
],
"rows": [
"id": 1,
"Heading1": {
"value": "Value1"
},
"Heading2": {
"value": "Value2"
}
]
}
列可以有未知数量的标题及其值,例如。行数组中使用了“Header1”。
到目前为止,我有以下结构:
public class QueryResult {
private ColumnConfig[] columns;
private QueryResultRow[] rows;
}
public class ColumnConfig {
private String header;
}
public class QueryResultRow {
private int id;
private Map<String, CellValue> values;
}
public class CellValue{
private String value;
}
问题是当我反序列化为 QueryResult 时 Map 为空;
我阅读了有关 TypeReference 的信息,但我不知道如何为 QueryResultRow 中的属性值指定 TypeReference
编辑:
我的 ObjectMapper 代码如下:
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
String queryResultString = loadQuery(queryPath);
QueryResult result = mapper.readValue(queryResultString, QueryResult.class);
queryResultString的内容就是上面的JSON。
【问题讨论】:
-
JSON反序列化代码对每个人都有帮助。 -
向我们展示您的
ObjectMapper反序列化代码。 -
使用
@JsonAnySetter。