gpt4 book ai didi

java - java中的JSON字符串解析

转载 作者:太空宇宙 更新时间:2023-11-04 14:06:55 24 4
gpt4 key购买 nike

我将一个字符串传递给一个方法,我需要将其反序列化为一个对象,但我不断遇到 JSON 映射异常。

private static final ObjectMapper mapper = new ObjectMapper();

public ArrayList<Double> parseVector(String json){
Vector vector = new Vector();
try {
vector = mapper.readValue(json, TypeFactory.collectionType(ArrayList.class, Vector.class));
} catch ETC ........

还应该注意的是,Vector 是一个内部类,设置如下:

static class Vector{
@JsonProperty("P")
public Double performance;
@JsonProperty("M")
public Double margin;
@JsonProperty("I")
public Double pace;
}

对于此示例,json 的值为:

{'P':8,'M':2,'I':0} 

我收到此异常:

JSONDeserializer : getVectorMap()   JsonMappingException : 
org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of java.util.ArrayList out of START_OBJECT token
at [Source: java.io.StringReader@77d65595; line: 1, column: 1]

谁能给我一些关于这个的见解?

最佳答案

您的新错误来自以下事实:

vector = mapper.readValue(json, TypeFactory.collectionType(ArrayList.class, Vector.class));

告诉 Jackson 反序列化 ArrayList<Vector>来自json 。您的json值包含一个 JSON 对象。一个List类型只能从 JSON 数组反序列化。

直接使用

vector = mapper.readValue(json, Vector.class);

关于java - java中的JSON字符串解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28772362/

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