gpt4 book ai didi

java - Jackson 库 1.x 数组如果一个元素有时只是一个字符串

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:01:12 26 4
gpt4 key购买 nike

我必须处理奇怪的 Json 消息。

架构中有数组,但如果只有一个元素数组就变成了字符串。

所以有时它是:

        "Cisco-AVPair": [
"connect-progress=Call Up",
"nas-tx-speed=8083000",
"nas-rx-speed=8083000"
],

有时:

         "Cisco-AVPair": "connect-progress=Call Up".

如果我使用 Jackson 1.8.2 如何克服这个问题

恐怕我无法控制源代码的生成,只能解析它。

我用以下方法解析它:

         mapper.readValue(json, refType);

虽然我的类型引用是:

         @JsonProperty("Cisco-AVPair")
private List<String> CiscoAVPair = new ArrayList<String>();

@JsonProperty("Cisco-AVPair")
public List<String> getCiscoAVPair() {
return CiscoAVPair;
}

@JsonProperty("Cisco-AVPair")
public void setCiscoAVPair(List<String> CiscoAVPair) {
this.CiscoAVPair = CiscoAVPair;
}

如您所见,它是字符串列表,但有时只是一个字符串。

最佳答案

即使在古老的 Jackson 1.8.2 中也有一个特定的配置选项可以完全满足您的需求。

您应该将 ObjectMapper 实例配置为始终将 JSON 值反序列化为 List,无论值是作为数组还是作为单个元素出现。请看javadocs here对于您需要启用的反序列化功能,以及 these other javadocs查看如何实际激活/停用 ObjectMapper 实例上的功能。

ObjectMapper mapper = ...;
mapper = mapper.configure(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);

请记住,configure() 方法会返回 ObjectMapper 的另一个实例。

关于java - Jackson 库 1.x 数组如果一个元素有时只是一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28943641/

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