有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用包含RestTemplate数组的单个字段为json创建POJO

我正在为以下JSON格式创建一个客户端-

{
    "results": [
        {
            "Product": "K265113",
            "Language": "EN",
            "LongText": "FIXTURE,INTERIOR,WALL"
        }
    ]
}

JSON始终包含“results”字段,该字段是单个元素的数组(它将始终是该数组中的单个元素)。我只需要JSON中的LongText字段,其他什么都不需要。我正在使用SpringRESTTemplate

我知道,如果我创建两个DTO,就像-

public class ParentDTO
{
    private List<ChildDTO> results;

    public List<ChildDTO> getResults()
    {
        return results;
    }

    public void setResults(List<ChildDTO> results)
    {
        this.results = results;
    }
}


public class ChildDTO
{
    private String longText;

    public String getLongText()
    {
        return longText;
    }

    @JsonProperty("LongText")
    public void setLongText(String longText)
    {
        this.longText = longText;
    }
}

但是有没有办法通过创建一个DTO来读取longText,因为父DTO没有任何有用的字段,因为我知道结果数组中只有一个元素


共 (1) 个答案

  1. # 1 楼答案

    您只需要一个DTO的原因可能是您只需要一个类来执行此任务。您可以使用ChildDTO作为内部类来实现这一点,这将使它更具可读性和可维护性

    另一种方法是不将spring模板响应解析为dto,而是使用jacksondatabindapi的JSONNode

    JsonNode root = objectMapper.readTree(response.getBody());
    

    您可以在以下网址找到更多信息: https://fasterxml.github.io/jackson-databind/javadoc/2.8/com/fasterxml/jackson/databind/JsonNode.html

    您可以遍历树并直接检索属性值,而无需任何DTO