【问题标题】:How to add a URL String in a JSON object如何在 JSON 对象中添加 URL 字符串
【发布时间】:2012-01-20 12:52:43
【问题描述】:

我需要添加一个通常格式为 http:\somewebsite.com\somepage.asp 的 URL。 当我使用上述 URL 创建一个字符串并将其添加到 JSON 对象 json

使用

json.put("url",urlstring);

它附加了一个额外的“\”,当我检查输出时,它就像http:\\\\somewebsite.com\\somepage.asp

当我将 URL 指定为 http://somewebsite.com/somepage.asp json 输出为http:\/\/somewebsite.com\/somepage.asp

请您帮我按原样检索 URL 吗?

谢谢

【问题讨论】:

  • 为什么在 URL 中使用反斜杠? URL 仅使用正斜杠。第一个 URL 在语法上也不正确。它应该类似于http://somewebsite.com/somepage.asp
  • 如果您正在查看由序列化程序生成的 JSON 字符串 - 可以转义斜杠。反序列化 JSON 字符串时,斜杠将不转义。

标签: java json


【解决方案1】:

您的 JSON 库会自动转义斜杠等字符。在接收端,您必须使用 replace() 之类的函数删除这些反斜杠。

这是一个例子:

string receivedUrlString = "http:\/\/somewebsite.com\/somepage.asp";<br />
string cleanedUrlString  = receivedUrlString.replace('\', '');

cleanedUrlString 应该是"http://somewebsite.com/somepage.asp"

希望这会有所帮助。

参考:http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#replace(char,%20char)

【讨论】:

    【解决方案2】:

    Tichodroma 的回答已经确定了。您可以通过存储有效的 URL 来解决“问题”。


    此外,JSON 格式要求字符串中的反斜杠使用第二个反斜杠进行转义。如果省略第二个反斜杠,则结果为无效 JSON。请参阅http://www.json.org 处的 JSON 语法图

    双反斜杠给您带来问题的事实实际上意味着正在读取文件的软件已损坏。正确编写的 JSON 解析器将自动对字符串进行反转义。我在上面链接的站点列出了许多用多种语言编写的 JSON 解析器库。您应该使用其中之一,而不是尝试自己编写 JSON 解析代码。

    【讨论】:

      猜你喜欢
      • 2013-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多