【问题标题】:JSON strings and how to handle escaped charactersJSON 字符串以及如何处理转义字符
【发布时间】:2010-09-07 13:20:53
【问题描述】:

我正在为我的 java 项目广告使用官方 JSON 库,但我发现了一些奇怪的东西。

如果我有这样的 json:

{
  "text": "This is a multiline\n text"
}

我尝试得到这样的字符串:

System.out.println(jsonObject.getString("text"));

我在输出中得到了这个:

This is a multiline\n text

而不是:

This is a multiline
text

有谁知道处理特殊字符如\n 和\t 的正确方法吗?我总是可以替换每一个,但我必须一个一个地处理它们。

【问题讨论】:

    标签: java string json escaping


    【解决方案1】:

    你没有正确地转义你的换行符,它应该是:

    {
      "text": "This is a multiline\\n text"
    }
    

    【讨论】:

    • 我明白了......问题是我从网络服务获取我的 json 字符串,这就是他们为它们服务的方式。你知道将我指定的字符串转换为正确格式的一般方法吗?
    • 代码中的转义换行符是文字反斜杠,后跟字符 n,根本不是转义序列。
    • 我知道“问题”是什么。我只是在问是否有一种自动处理字符串的方法,如果它在 java 文件中键入它会被处理...
    【解决方案2】:

    您上面的示例是正确的并且显示正确,但是有“人类可读的” \n (在字符串中是 \n )并且有转义字符 \n (在字符串中是原始的 \n )。我猜你正在使用的任何库都在生成人类可读的代码,而不是正确的转义码。

    尝试:json_obj.text.replace(/\\n/g,"\n"); 将字符串转换回来。

    【讨论】:

    • 正如我在问题中所说,我可以替换所有这些情况,但我必须自己处理所有特殊字符,如 \t。我想知道是否有处理这种情况的“正确”方式。
    • 我看到json.org 支持的大量库您正在使用哪个库?
    • 输入字符串已经嵌入了正确的转义码? org.json 支持正确的转义输出,这里某处有错误。
    • 其实你是对的。问题出在网络服务的某个地方...我尝试从文本文件中加载 json 并且它有效。谢谢...
    • 知道了。该服务将提供 \\n 而不是 \n。我只看到了输出,这就是我想我所想的原因:)
    猜你喜欢
    • 1970-01-01
    • 2013-03-17
    • 1970-01-01
    • 1970-01-01
    • 2013-03-31
    • 2021-07-21
    • 1970-01-01
    • 2014-08-16
    相关资源
    最近更新 更多