【发布时间】:2020-10-23 21:30:11
【问题描述】:
使用 Java、Spring Boot。
我正在进行一个返回 JSON 的 RestTemplate 调用(针对 GraphQL)。
JSON 响应
{
"customer_name": "Jon Doe",
"address": {
"address_id": 4
}
}
我想将嵌套的 addressId 反序列化为 Customer Pojo。这是我目前的做法:
public class Customer implements Serializable {
@JsonProperty("customer_name")
private String customerName;
@JsonDeserialize(using = IdFromAddressDeserializer.class)
@JsonProperty("address")
private Integer addressId;
public Integer getAddressId() { return this.addressId; }
public void setAddressId(Integer addressId) { this.addressId = addressId; }
public class IdFromAddressDeserializer extends JsonDeserializer<Integer> {
@Override
public Integer deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {
// ISSUE p.getText.toString() -> "{"
// I would expect that I can parse the json for address and extract the id field from the map
return null;
}
}
【问题讨论】:
-
您觉得这有帮助吗?在 Customer.java 中创建一个方法并删除注释 jsonDeserialize 并将忽略未知属性添加到 true。
@JsonProperty("address") private void extractNested(Map<String,Object> address) { this.addressId = (Integer)address.get("address_id"); }
标签: java spring spring-boot jackson graphql