我收到了一个第三方服务的回复,如下所示:
{
"field1": "string",
"field2": "string",
"objectList": [
{
"object1": {
"field11": "string",
"field12": "string",
"field13": "string",
"field14": "string",
},
"object2": {
"field21": "string",
"field22": "string",
"field23": "string",
},
"object3": {
"field31": "string",
"field32": "string",
"field33": "string",
"field34": "string",
"field35": "string",
}
}
]
}
object1,object2和object3的类型不同,我只想从响应中获取object2。
我尝试过这种方法:
ResponseEntity<ResponseClass> response = restTemplate.exchange( uri, HttpMethod.POST, entity, ResponseClass.class );
ResponseClass如下所示:
@JsonIgnoreProperties(ignoreUnknown = true)
@Data
public class ResponseClass implements Serializable {
private static final long serialVersionUID = -4355652702566088304L;
@JsonProperty("field1")
private String field1;
@JsonProperty("field2")
private String field2;
@JsonProperty("objectList")
private List objectList;
我正在获取完整的objectList,因此可以将其提取为键值对,例如objectList.get(0).get(“ object2”)或类似的东西。但是我不确定是否有更好的解决方案。
任何人都可以提供一些有关如何改进此方法或如何仅获取我想要的对象的指导吗?
答案 0 :(得分:2)
有两种查看方式。
可扩展性和纯面向对象的方式:
您需要在您的身边正确映射整个响应对象,而不要有一个模棱两可的List。数组应始终具有相同类型的对象。在您的示例中,基本上也有一个包装对象列表,其中包含对象1,对象2和对象3。
因此,基本上,您应该执行以下操作:
w+
另一种方法是,如果您不想将其映射到自定义对象,则将响应放在JsonNode中,然后对其进行getProperty()。
答案 1 :(得分:0)
objectList[0].object2
0给您列表中的第一项 然后object2访问字典的值