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 楼答案
您只需要一个DTO的原因可能是您只需要一个类来执行此任务。您可以使用ChildDTO作为内部类来实现这一点,这将使它更具可读性和可维护性
另一种方法是不将spring模板响应解析为dto,而是使用jacksondatabindapi的JSONNode类
您可以在以下网址找到更多信息: https://fasterxml.github.io/jackson-databind/javadoc/2.8/com/fasterxml/jackson/databind/JsonNode.html
您可以遍历树并直接检索属性值,而无需任何DTO