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

4uqofj5v  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(400)

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)):应以双引号作为字段名的开头

gjmwrych

gjmwrych1#

有一个额外的开放式花括号:

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

将第一行更改为:

String field="[" // extra open curly  removed

并删除json中最后一个结束卷发。

pvcm50d1

pvcm50d12#

查看-->mapper.readvalue行(field,computeresourceinputvo[].class),这意味着作为json的字段需要Map到computeresourceinputvo的数组
下一步:
在computeresourceinputvo类中,有一个computeresourceinputfield数组
在computeresourceinputfield中定义了属性。
因此,对于这种类型的代码,字段json字符串的格式不正确。
你应该有这样的东西

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

相关问题