【发布时间】:2013-02-09 02:53:14
【问题描述】:
由于与 Spring 框架的集成,我刚刚开始使用 Jackson,并且遇到了值中单引号的问题。尝试在页面上使用 jQuery 解析 JSON 时,我收到一个 JavaScript 错误 "SyntaxError: missing ) after argument list"。我习惯使用 Gson 来序列化我的对象并且不会遇到这个问题,因为 Gson 会用 Unicode \u0027 替换单引号。
例如;
Java
public final class Person {
private String firstName;
private String lastName;
public Person() {}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getFirstName() {
return firstName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getLastName() {
return lastName;
}
}
JSON
在杰克逊
[{"person":{"firstName":"James","lastName":"O'tool"}}]
在格森
[{"person":{"firstName":"James","lastName":"O\u0027tool"}}]
JavaScript;
// This is where the JavaScript fails with the Jackson serialized object
$.parseJSON('${requestScope.person}');
我一直在寻找解决方案,但找不到。 有谁知道是否可以像 Gson 一样配置 Jackson 来处理单引号?
感谢您的宝贵时间。
【问题讨论】:
-
不要尝试以字符串文字输出 JSON(当然是转义)并解析它们。只需输出 Object Literals!
-
抱歉,我忘了说明这不是 ajax 调用,JSON 对象的解析发生在 JSP 上。如果这是一个直接的 ajax 调用,就不会有问题。
-
不,您正在尝试使用 JavaScript(不是 JSP)解析(错误转义的)JSON 字符串
-
我明白这一点。 Google 的 Gson 库默认执行此操作,我只是想知道 Jackson 是否可以通过某种方式执行此操作。
-
Jason 的一篇关于 json 的帖子,谈到了 jackson,然后用 Gson 的一些代码解决了这个问题。我的脑袋明白这一点为时已晚...... :)
标签: java javascript json spring jackson