解析格式错误的jSon字符串

时间:2011-09-14 10:45:05

标签: java json

我正在使用Java Json库将传入的字符串转换为json字符串。 lib是json-lib

问题是我无法修改源代码,所以有时我会得到一些格式错误的jSon字符串,尤其是这种键/值字符串:

"key":"a quoted "value" "

(这是一个简化的例子)

如您所见,该值周围有双引号。

那么,是否有一个API可以自动替换带有反斜杠的内部双引号?

谢谢。

3 个答案:

答案 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");

在这里,我们只会逃避那些没有跟随',' ':'和' {'并没有跟着',' ':' '}'