首页 > 解决方案 > 当双引号出现在键/值中时 JSON 被破坏

问题描述

样本数据:

{"630":{"TotalLength":"33-3/8" - 36-3/4""},"631":{"Length":"34 37 7/8"}}

我们在 JSON 响应中面临双引号问题。我们如何将双引号替换为键或值内部的“\”“?Java 是开发平台。

标签: javajsonregex

解决方案


这个答案假设您无法控制创建这个类似 JSON 的字符串。如果你可以控制那部分,那么你应该在那里正确地逃跑。

在这种情况下,由于系统地解析不是一个选项,因为它还不是一个有效的 JSON,我所能建议的就是检查各种字符串,看看你是否能找到一个模式,你可以在其上应用一些逻辑并转义所有"s这会阻止字符串成为有效的 JSON。

这可能是一种开始的方式:

"字符串成为有效 JSON 所需的所有s 都被一个或多个字符包围,其中包括{:,和,和其他 JSON 字符}之间有或没有空格。"

因此,如果您使用 Java 解析类似 JSON 的字符串并查找所有"s,并且当遇到一个时,如果它们与上述任何字符(之间有或没有空格)一起,您只需将其保留为它是。如果没有,请将其替换"\".

请注意,上述方法可能有效,也可能无效,具体取决于相关数据。我的意思是,如果在创建字符串期间绝对没有办法对字符串进行转义,并且如果这些字符串对未转义的 s 遵循严格的模式,您可能会发现这种方法很有用"


推荐阅读