gpt4 book ai didi

java - 无法从 VALUE_STRING token 中反序列化 java.util.ArrayList 的实例

转载 作者:行者123 更新时间:2023-11-30 02:46:09 26 4
gpt4 key购买 nike

我在堆栈溢出中寻找过其他帖子,但没有一个适合我。这是一段代码:

 public class Forward implements Serializable {
private List<String> freq;
public List<String> getFreq() {
System.out.println("Print Freq::: --> " + freq);
return freq;
}

public void setFreq(List<String> freq) {
this.freq = freq;
}
}

JSON 字符串是:

{"forward":[{"freq":"78000000"}]}

我的映射器是:

ObjectMapper mapper = new ObjectMapper();            
mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
String jsonString = mapper.writeValueAsString(result);

如果我删除列表频率并更改为字符串频率,它可以工作,但我的 JSON 可以包含一个或多个频率,因此我需要创建一个列表。我得到的异常为:

  Can not deserialize instance of java.util.ArrayList out of VALUE_STRING token at [Source: org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$UnCloseableInputStream

最佳答案

DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY反序列化工作正常 "freq":"78000000"片段作为 List<String> freq 的值列表。

但是你还有另一个问题:你的 json包含 forward 的显式数组。为了反序列化整个json你需要有某种包装类,比如:

  public class ForwardWrapper {
private List<Forward> forward;

public List<Forward> getForward() {
return forward;
}

public void setForward(List<Forward> forward) {
this.forward = forward;
}
}

在这种情况下

    ForwardWrapper fw = mapper.readValue("{\"forward\":[{\"freq\":\"78000000\"}]}", ForwardWrapper.class);

将完美地反序列化它。

关于java - 无法从 VALUE_STRING token 中反序列化 java.util.ArrayList 的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40147304/

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