gpt4 book ai didi

java - 将 JSON 值数组解析为 POJO

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:34:52 25 4
gpt4 key购买 nike

我需要处理来自外部 SAP 服务的响应,该服务以数组形式返回数据,如下所示:

{
"INFO":"",
"SERVICE_NAME":[["PARAM1","PARAM2","PARAM3","PARAM4"]],
"RESULTS":[
["object1fieldValue1","object1fieldValue2"],
["object2fieldValue1","object2fieldValue2"]
]
}

我想将结果进一步处理为这样的 DTO 列表:

public class ResultItemDto {
private String field1;
private String field2;
}

而不是将每个对象作为一个字符串列表来处理,并可能手动将其映射到 DTO。

将此类 JSON 直接映射到 POJO 的正确、简洁的“Jackson 方式”是什么?

最佳答案

您可以使用 @JsonFormat 注释一个类,以指示它将在 JSON 中显示为数组:

@JsonFormat(shape = JsonFormat.Shape.ARRAY)
class ResultItemDto {
private String field1;
private String field2;
}

为了验证以上内容,我为完整对象创建了一个包装器类:

class ResultWrapper {
private List<ResultItemDto> results;
}

像这样反序列化:

ObjectMapper mapper = new ObjectMapper();
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
mapper.enable(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES);

ResultWrapper result = mapper.readValue(json, ResultWrapper.class);

使用 ACCEPT_CASE_INSENSITIVE_PROPERTIES 是因为您的 JSON 包含大写名称的字段。

@JsonFormat 的文档和相关shapes

关于java - 将 JSON 值数组解析为 POJO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44971819/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com