Mar*_*cus 0 java string parsing json escaping
在Java中编写JSON解析器时遇到了"整容"问题:
在JSON规范中,明确指出Javascript控制字符与例如C和Java中的相同,如\n或\ t.我遇到的问题是,当JSON字符串中有控制代码时(所以在引号中:"property":"value"),然后显示的JSON代码搞砸了,因为控制字符正在改变打印,例如\n创建一个新行或\ t创建一个选项卡.
一个例子:
String s = "{\n\t\"property1\": \"The quick brown fox\njumps over the lazy dog\",\n\t\"property2\":\"value2\"\n}"
印刷为:
{
"property1": "The quick brown fox
jumps over the lazy dog",
"property2": "value2"
}
解决方案如下所示:
String s = "{\n\t\"property1\": \"The quick brown fox\\njumps over the lazy dog\",\n\t\"property2\": \"value2\"\n}"
正确打印为:
{
"property1": "The quick brown fox\njumps over the lazy dog",
"property2": "value2"
}
所以我的问题是:将字符串外的控制代码与字符串中的控制代码区别对待是否正确?而且是正确的添加范围内JSON弦乐器一个反斜杠\前的任何控制字符,创建的字符串,如"\n"或"\ t"的,不会对JSON字符串的外观有什么影响?
将字符串外的控制代码与字符串中的控制代码区别对待是否正确?
的JSON规范状态
JSON文本是一系列标记.标记集包括六个结构字符,字符串,数字和三个文字名称.
这是{,[,},],:,和,.然后说明
在六个结构字符中的任何一个之前或之后允许无关紧要的空格.
你\n,\t和其他人(实际上是规范定义了其中4)被认为是空白,所以你可以根据需要围绕上述字符把尽可能多的人.
JSON字符串之外没有控制字符的概念.这些只是空格字符.是的,他们受到不同的待遇.
\在任何控制字符之前在JSON字符串中添加另一个反斜杠是正确的,创建类似于"\n"或"\t"不会对JSON字符串外观产生任何影响的字符串?
在您的示例中,您正在编写String文字.如果您真的想要写入\nJSON字符串,则需要\\n在Java String文本中编写,并且类似地编写其他转义序列.JSON生成器必须在Java中找到String它转换为JSON字符串的任何空格并相应地对其进行转义.JSON解析器必须\n在它解析的JSON字符串中找到文字(或其他任何内容),并在String它创建的Java中适当地转换它.
| 归档时间: |
|
| 查看次数: |
14616 次 |
| 最近记录: |