我有一个简单的DTO:
public class DtoParamField {
private String name;
private Object value;
private DtoParamField(String name, Object value) {
this.name = name;
this.value = value;
}
我希望它会以JSON的形式被接收,如下所示:
{
"field1": "value1",
"field2": "field2",
"params": [{name="1", value="123"}, {name="2", value="123"}]
}
将params
属性Map到DToParamField
列表的最快和最简单的方法是什么?
1条答案
按热度按时间lyr7nygr1#
如果我没有理解错的话,您只对JSON数组
params
中包含的数据感兴趣。您可以通过以下步骤解决此问题:
params
属性对应的JsonNode
。为此,可以使用ObjectMapper.readTree()
并应用get()
来从树中获取特定节点。JsonNode
解析成一个列表List,为此你可以使用ObjectReader.readValue()
。看起来可能是这样的:
***请注意***为了成功构建DTO示例,Jackson需要:
DtoParamField
类中提供的 * 设置器 * 和 * 无参数构造函数 *。@JsonCreator
和每个参数上的@JsonProperty
。这种方法允许使用final
字段(这在setter中是不可能的)。创建 setters 和 no-args constructor 非常简单,这就是后一个选项的外观:
还要注意,为了将
DtoParamField
序列化为JSON(* 如果需要 *),您需要getter。