当前位置: 首页 > 知识库问答 >
问题:

jackson中的意外角色('\'(代码92))

祝高阳
2023-03-14
String jsonString = "{\"Age\":40, \"Name\":\"Sample User\"}";
ObjectMapper mapper = new ObjectMapper();
mapper.readValue(jsonString,JsonNode.class);

System.out.println(jsonstirng)
{"Age":40, "Name":"Sample User"}

在某些情况下,我需要转义无效的字符串字符,如“、'

对于转义,我使用ApacheStringEscapeUtils

String escapedString = StringEscapeUtils.escapeJson(jsonStirng);

转义字符串输出

{\"Age\":40,\"Name\":\"Sample User\"}
ObjectMapper mapper = new ObjectMapper();
mapper.readValue(escapedString,JsonNode.class);
Unexpected character ('\' (code 92)): was expecting double-quote to start field name

实际上正在解析ModSecurity审计日志。审计日志的响应体包含(html、css、javascript等)内容,这就是为什么我需要转义JSON字符串的原因,否则它会破坏JSON格式。

共有1个答案

袁翰池
2023-03-14

转义字符串的目的是使其作为JSON片段不可解析。

在您的原因中,您将所有替换为\”,这样它就可以在字符串值中使用,解析器不会将其视为JSON的一部分。

例如:这只是一个字段和值;

"myJson": "{\"Age\":40,\"Name\":\"Sample User\"}"
"myJson": "{"Age":40,"Name":"Sample User"}"

编辑:这里有一个示例

String text = "{\"Age\":40,\"Name\":\"Sample User\"}";
String escaped = StringEscapeUtils.escapeJson(text);
System.out.println("escaped= " + escaped);
String unescaped = StringEscapeUtils.unescapeJson(escaped);
System.out.println("unescaped= " + unescaped);

印刷品

escaped= {\"Age\":40,\"Name\":\"Sample User\"}
unescaped= {"Age":40,"Name":"Sample User"}

您可以看到转义的字符串有\“而未转义的字符串没有。如果您仍然看到\我认为字符串没有被转义。

 类似资料:
  • 嘿,我遇到了一个关于与jackson反序列化的问题,这里是我尝试过的和我得到的错误。 错误:com。fasterxml。杰克逊。果心JsonParseException:意外字符('}'(代码125)):应以双引号开始字段名 Java代码 我的JSON

  • com.sun.jersey.spi.container.containerresponse mapMappableContainerException严重:MappableContainerException中包含的异常无法映射到响应,重新抛出到HTTP容器org.codehaus.jackson.JsonParseException:意外字符(“b”(代码98)):在[source:java.

  • 我正在尝试创建一个用户登录页面,当我尝试注册时,我得到了这个错误。我想Json对象部分有问题。我尝试在论坛中搜索其他答案,但似乎都没有解决我的问题。请求你帮我解决这个问题。谢谢是提前的。 我的原木猫

  • }如果您运行该代码,您会发现它工作得很好。那么问题出在哪里?我必须在Oracle NoSQL数据库上执行同样的操作。了解与数据检索相关的任何部分并不重要,因为它们工作得很好,我已经测试过它们。代码非常相似: 我的目标是获得与第一段代码完全相同的结果。根据我的类tweet的属性,由''分隔的值字符串。 但是,这段代码被压缩在一个Jar文件中,并由数据库在记录的所有tweet上运行。我无法看到发生了什

  • 嗨,我有问题与我的网站我得到语法错误,意外结束在文件...在第40行() 我应该做什么来解决这个问题? 我看不出我的代码有任何问题,我遇到了这个问题,我应该如何解决它,因为它在第40行说,第40行是html的结尾,请帮助

  • 我在数据库中有一个Json字符串,但在Java对象中转换时,它给出了以下错误: