【问题标题】:Java Spring: Web Service REST producing double backslash at JSONJava Spring:Web 服务 REST 在 JSON 中产生双反斜杠
【发布时间】:2014-06-05 16:40:14
【问题描述】:

所以我有这个字符串,例如

"B\z@b@s@rB{FpMgBrD~DK|"

但是 Spring 正在 json 中生成这个:

"B\\z@b@s@rB{FpMgBrD~DK|"

任何带有反斜杠\ 的字符串也是如此。在生成json之前替换字符是没有用的,因为在生成json之前String是正确的。

使用该服务的每个客户端都可以 .replace("\\","\\\\") json,但我想知道是否会有更清洁的方法来解决问题和在服务器端。

这是 WS 的代码:

@RequestMapping(value = "/rest/sinc/{ms}", method = RequestMethod.GET, produces="application/json;charset=UTF-8")
@ResponseBody
public String sincronizar(@PathVariable("ms") Long ms) {
    return sincService.getSinc(ms).toString();
}

我尝试了其他方法来使用 Gson 等库生成 json,但结果是一样的。

【问题讨论】:

    标签: java json spring rest spring-mvc


    【解决方案1】:

    这是 JSON 中的预期行为。 \ 需要转义。请参阅规范,here。

    所有 Unicode 字符都可以放在引号内, 必须转义的字符除外:引号, 反斜线和控制字符(U+0000 到 U+001F)。

    【讨论】:

    • 所以问题一定出在如何消费而不是如何产生?
    • @MiguelAngelMerinoVega 我不知道问题出在哪里,但是在服务器上正确生成了 JSON。您的客户端可能应该使用 JSON 解析器,它会为您正确进行转换。
    猜你喜欢
    • 1970-01-01
    • 2010-12-14
    • 1970-01-01
    • 1970-01-01
    • 2012-06-16
    • 1970-01-01
    • 2014-10-07
    • 1970-01-01
    相关资源
    最近更新 更多