首页 > 解决方案 > JsonParseException:意外字符('{'(代码 123)):期待双引号开始

问题描述

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)):期待双引号开始字段名称

标签: javajson

解决方案


有一个额外的开放大括号:

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

将第一行更改为:

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

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


推荐阅读