2012-01-20 28 views
6

我需要通常以http:\ somewebsite.com \ somepage.asp格式添加URL。 当我创建上述URL字符串,并使用如何在JSON对象中添加URL字符串

json.put("url",urlstring); 

它附加一个额外的将它添加到JSON对象JSON

“\”当我检查输出它就像http:\\\\somewebsite.com\\somepage.asp

当我给的网址为http://somewebsite.com/somepage.asp json的输出是http:\/\/somewebsite.com\/somepage.asp

你能帮我检索一下这个URL吗?

谢谢

+3

为什么你在你的URL中使用反斜杠?网址只使用正斜杠。第一个URL在语法上也不正确。它应该像'http:// somewebsite.com/somepage.asp'。 – Jonathan

+2

如果您正在查看由序列化器生成的JSON字符串 - 没有斜线可以逃脱。当JSON字符串被反序列化时,斜杠将被转义。 – zysoft

回答

6

您的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

3

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


此外,JSON格式需要,在字符串反斜杠与另一个反斜杠转义。如果第二个反斜杠被遗漏,结果是无效的JSON。请参阅0123B处的JSON语法图

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