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

发布于 2024-11-18 10:13:46 字数 593 浏览 2 评论 0原文

我是使用杰克逊库的新手。

我正在尝试执行此操作[见下文],但它抛出错误。

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 .....

例外:

org.codehaus.jackson.JsonParseException:意外字符('''(代码 39)):期望以双引号开头字段名称
在[来源:java.io.StringReader@1afd1810;行:1,列:3]
  在 org.codehaus.jackson.JsonParser._constructError(JsonParser.java:1291)

如果我用双引号(“)替换单引号('),同样的事情会起作用。

I am a newbie to using jackson library.

I am trying to do this [see below], and it is throwing error.

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 .....

Exception:

org.codehaus.jackson.JsonParseException: Unexpected character (''' (code 39)): was expecting double-quote to start field name
at [Source: java.io.StringReader@1afd1810; line: 1, column: 3]
  at org.codehaus.jackson.JsonParser._constructError(JsonParser.java:1291)

While the same thing works if I replace the single quote(') with double quote(").

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

感性 2024-11-25 10:13:46

它不是有效的 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"}

It's not valid JSON, but you can tell Jackson to allow it. Here's how.

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"}
荭秂 2024-11-25 10:13:46

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

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

<图片src="https://i.sstatic.net/Ca4GZ.gif" alt="有效 JSON 字符串管道图">
(来源:json.org

(参见json.org 了解 JSON 的完整规范。)

Strings in JSON may only be specified using double quotes ("), not single quotes ('), this is the reason for your error; use double quotes.

Here's the pipe diagram that specifies valid JSON strings (note they may only be encapsulated with double quotes!)

Valid JSON Strings Pipe Diagram
(source: json.org)

(See json.org for a complete specification of JSON.)

绿萝 2024-11-25 10:13:46

这就是我的情况下的工作方式:

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

This is the way it works in my case:

var jsonString ='{"it":"Stati Uniti d'America"}';
jsonString =jsonString.replace("'", "\\\\u0027");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文