我刚刚开始使用杰克逊,因为它与Spring框架集成,并且遇到了单引号引起的问题。当试图在页面上用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"}}]
在GSON [{"person":{"firstName":"James","lastName":"O\u0027tool"}}]
的JavaScript;
// This is where the JavaScript fails with the Jackson serialized object
$.parseJSON('${requestScope.person}');
我找了一个解决方案,但无法找到一个。 有谁知道是否可以配置杰克逊像Gson一样处理单引号?
谢谢你的时间。
不要尝试在字符串文本中输出JSON(当然是转义它们)并解析它们。只输出对象文字! – Bergi 2013-02-23 17:27:09
对不起,我忘记了这不是ajax调用,而是在JSP上解析JSON对象。如果这是一个直接的Ajax调用,那就不会有问题了。 – Jason 2013-02-23 23:44:10
不,你正试图用JavaScript解析一个(错误转义的)JSON字符串(不是JSP) – Bergi 2013-02-23 23:45:41