我正在使用Java Json库将传入的字符串转换为json字符串。 lib是json-lib。
问题是我无法修改源代码,所以有时我会得到一些格式错误的jSon字符串,尤其是这种键/值字符串:
"key":"a quoted "value" "
(这是一个简化的例子)
如您所见,该值周围有双引号。
那么,是否有一个API可以自动替换带有反斜杠的内部双引号?
谢谢。
答案 0 :(得分:4)
嗯,不可能。例如,以下(格式错误的示例)意味着什么:
"key":"is this a value?","another key":"is this a value too?"
在您的情况下,它可能是:
"key":"is this a value?","another key":"is this a value too?"
^k1 ^v1 ^k2 ^v2
或:
"key\":\"is this a value?\",\"another key":"is this a value too?"
^k1 ^v1
答案 1 :(得分:0)
您可以编写一个简单的解析器,查找"
后面没有,
,:
或}
或其他有效字符,并引用它和下一个"
发生。这将使MByD的例子不受影响,但改变你的榜样。
答案 2 :(得分:0)
如果您确定没有密钥包含':'和','你可以使用以下内容:
String repaired = broken.replaceAll("([^,{:])\"([^,:]})", "$1\\\\\"$2");
在这里,我们只会逃避那些没有跟随',' ':'和' {'并没有跟着',' ':' '}'