gpt4 book ai didi

java - jackson 解析器 : ignore deserializing for type mismatch

转载 作者:太空狗 更新时间:2023-10-29 13:33:58 27 4
gpt4 key购买 nike

我收到服务器生成的以下响应 cakephp

 [
{
"id": "42389",
"start": "0000-00-00",
"end": "0000-00-00",
"event_id": null,
"trip_id": "5791",
"location_id": "231552",
"user_id": "105",
"users_attending": "0",
"user_local": "0",
"Trip": {
"name": "Asdas"
},
"Event": [],
"Location": {
"name": "South Melbourne"
}
},
{
"id": "42392",
"start": "0000-00-00",
"end": "0000-00-00",
"event_id": "1218",
"trip_id": "4772",
"location_id": "271505",
"user_id": "105",
"users_attending": "3",
"user_local": "50",
"Trip": {
"name": "trip by 1059200"
},
"Event": {
"title": "SampleEvent 454",
"id": "1218"
},
"Location": {
"name": "Houston"
}
},
.......
]

问题是解析器需要 Event 对象,但如果它的 null 那么它接收的是空数组。

由于响应是由 cakephp 自动生成的,因此必须在服务器端的很多地方进行更改。

如果 Event 属性为空数组,是否有任何简单的方法让 jackson 忽略它??

编辑:

我试过使用 Event 名称的两个属性:一个数组和另一个对象,但这也没有用。

最佳答案

因为我不得不为许多对象处理这样的响应,所以我最终继续创建一个通用类,它会返回一个 Deserializer。对于特定的 class .

这是我用过的

public class Deserializer<T> {

public JsonDeserializer<T> getDeserializer(final Class<T> cls) {
return new JsonDeserializer<T> (){

@Override
public T deserialize(JsonParser jp, DeserializationContext arg1) throws IOException, JsonProcessingException {
JsonNode node = jp.readValueAsTree();
if (node.isObject()) {
return new ObjectMapper().convertValue(node, cls);
}
return null;
}
};
}

关于java - jackson 解析器 : ignore deserializing for type mismatch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12684808/

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