繁体   English   中英

如何在 Java 中从 jsonString 的引号内转义引号

[英]how to escape quotes inside quotes from jsonString in Java

我有双引号的问题。 我们有一个 JAVA Web 服务器,其中的字符串输入被解析为 JSON。 有时,提供给我们的数据包括引号内的引号,这会破坏 JSON 解析器。 他们似乎不可能逃脱这些角色,所以我可以逃脱他们吗?

例如数据是这样的:{"id":"101","user":"username","comment":"Example: "Comment: 123" test" }

“评论”中的引号是我需要转义的内容。

有时,提供给我们的数据包括引号内的引号,这会破坏 JSON 解析器。

那么它不是正确的 JSON,句号。 引号内的引号必须在 JSON 中转义。

他们似乎不可能逃脱这些字符......

更有可能的是,有人不想投入精力修复生成无效 JSON 的损坏软件。

....所以我可以在我们的最后逃脱他们吗?

你不会逃到最后。 您将编写一个自定义JSON 解析器来处理输入数据中的某些类型的损坏,并希望对其进行更正以符合发件人的意图 它将有效地猜测在被解析的测试中转义应该在哪里。

这将是很多工作。 你以前写过解析器吗?

困难之一是知道引用的字符串应该在哪里结束。

比较这些:

{"id":"101","user":"username","comment":"Example: "Comment: 123" test" }

{"id":"101","user":"username","comment":"Example: "Comment: 123" test" }" }

在第一种情况下,您可能希望“评论”属性的值以test结尾。 但是第二种情况呢? }是属性值的一部分吗? 为什么不在第一种情况下?

问题在于,当您的 JSON 在语法上不正确时,可以通过许多不同的方式更正解析器,最终得到有效的 JSON。 知道哪个修正是正确的修正是......嗯......一个问题。


我认为你应该听从 Jon Skeet 的建议。

推回。

告诉他们最后修复损坏的 JSON。

告诉他们要求是 >>JSON<< 并且不根据标准 JSON 语法解析的东西不是 JSON。

如果他们坚持:

  • 为超出约定要求范围的额外工作向他们收费; 即JSON。

  • 指出可能不可能为他们的东西编写一个解析器,它总是根据作者的期望解释他们的“非 JSON”文本。 (这取决于 JSON 模式的复杂程度以及错误引用问题的广泛程度。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM