Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 配置Jackson以反序列化单引号(无效)JSON_Java_Jackson - Fatal编程技术网

Java 配置Jackson以反序列化单引号(无效)JSON

Java 配置Jackson以反序列化单引号(无效)JSON,java,jackson,Java,Jackson,我是一个使用杰克逊图书馆的新手 我试图这样做[见下文],这是抛出错误 String x="{'candidateId':'k','candEducationId':1,'activitiesSocieties':'Activities for cand1'}"; ObjectMapper mapper = new ObjectMapper(); try { JsonNode df=mapper.readValue(x,JsonNode.class); int i=0; } ca

我是一个使用杰克逊图书馆的新手

我试图这样做[见下文],这是抛出错误

String x="{'candidateId':'k','candEducationId':1,'activitiesSocieties':'Activities for cand1'}";
ObjectMapper mapper = new ObjectMapper();

try {
    JsonNode df=mapper.readValue(x,JsonNode.class);
    int i=0;
} catch .....
例外情况:


如果我将单引号(')替换为双引号(“)。

JSON中的字符串只能使用双引号(
)指定,而不能使用单引号(
),这就是错误的原因;使用双引号

下面是指定有效JSON字符串的管道图(请注意,它们只能用双引号封装!)


(来源:)


(有关JSON的完整规范,请参阅。)

它不是有效的JSON,但您可以告诉Jackson允许它。这是怎么做的

String x = "{'candidateId':'k','candEducationId':1,'activitiesSocieties':'Activities for cand1'}";
ObjectMapper mapper = new ObjectMapper();
mapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);
JsonNode df = mapper.readValue(x, JsonNode.class);
System.out.println(df.toString());
// output: {"candidateId":"k","candEducationId":1,"activitiesSocieties":"Activities for cand1"}

这就是我的工作方式:

var jsonString ='{"it":"Stati Uniti d'America"}';
jsonString =jsonString.replace("'", "\\\\u0027");

问题是我可以用javascript中的单引号形成一个绝对有效的json对象,但不能用java解析它。在用解析前,是否必须将单引号替换为双引号jackson@Pipalayan:问题是单引号在JSON中无效,请查看规范。您无法使用此库分析单引号,因为简单地说,您向解析器提供的输入无效。“我可以用javascript中的单引号形成绝对有效的json对象”--javascript可能允许单引号,但这并不意味着它是有效的json。@布鲁斯感谢您的建议。这正是我想要的。
var jsonString ='{"it":"Stati Uniti d'America"}';
jsonString =jsonString.replace("'", "\\\\u0027");