java - java中的JSON字符串解析

标签 java json parsing arraylist

我将一个字符串传递给一个方法,我需要将其反序列化为一个对象,但我不断遇到 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/

相关文章:

java - Tika 检测多部分/签名

php - 使用 PHP 解析 JSON 文件

iphone - 使用 NSJSONSerialization 将 NSMutableDictionary 转换为 JSON 返回不同的结果

javascript - JSON:解析数组的名称(而不是值)

java - 计算直线与 x 轴之间的角度

java - JTextPane 从文本文件读取

Java字符串计算器

javascript - 如果键是数字,它会自动与从 JSON 创建的表中的左侧对齐

带有转义字符的 JavaCC 引用

c++ - Bison 中的三元运算符,避免双方计算