Java JsonParseException:意外字符(';{';(代码123)):应以双引号开头

Java JsonParseException:意外字符(';{';(代码123)):应以双引号开头,java,json,Java,Json,Json字符串 String field="[{" + "{\"key\":\"cloud\",\"value\":[\"AWS\"],\"search\":\"EQUALITY\"}" + ",{\"key\":\"region\",\"valu

Json字符串

String field="[{"
        + "{\"key\":\"cloud\",\"value\":[\"AWS\"],\"search\":\"EQUALITY\"}"
        + ",{\"key\":\"region\",\"value\":[\"US EAST1\"],\"search\":\"EQUALITY\"}"
        + "}]";
导致错误的代码:

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

    ObjectMapper mapper = new ObjectMapper();
    mapper.readValue(field, ComputeResourceInputVO[].class)
相关类

public class ComputeResourceInputVO implements Serializable {
    public ComputeResourceInputField[] computeResourceInputField;
}

class ComputeResourceInputField implements Serializable {

    public String[] value;
    public String search;
    public String key;
}
错误:


由以下原因引起:com.fasterxml.jackson.core.JsonParseException:意外字符(“{”(代码123)):应在字段名开头加双引号

String field="[{" // 1st open curly
// second line starts with another curly
    + "{\"key\":\"cloud\",\"value\":[\"AWS\"],\"search\":\"EQUALITY\"}"
    + ...
将第一行更改为:

String field="[" // extra open curly  removed
并删除json中的最后一个结束卷曲。

查看-->mapper.readValue行(字段,ComputerSourceInputVO[].class) 这意味着json字段需要映射到ComputerSourceInputVO的数组

下一步:

在类ComputerSourceInputVO中,您有一个ComputerSourceInputField数组

计算机资源输入字段中定义了属性

因此,对于这种类型的代码,字段json字符串的格式不正确

你应该有这样的东西

[{"computeResourceInputField":[{"value":["String1","String2"],"search":"USEAST","key":"A"},{"value":["String3","String4"],"search":"USWEST","key":"B"}]}]

我想构造一个
ComputeResourceInputVO
数组。其中
ComputeResourceInputVO
将包含一个
ComputeResourceInputField
数组。您能纠正我的Json吗请纠正我为数组添加的第一个[]和第一个{}用于
ComputeResourceInputVO
和我为
ComputeResourceInputField
@upog no添加的第二个花括号。
[]
定义了一个数组。数组内部应该是
{“key”:“foo”,…}
针对每个对象的字段。尝试执行我在回答中建议的无效JSON,因此我建议您学习JSON。一旦您认为您已修复JSON,请验证您的JSON以确保,例如,使用类似的在线验证程序。