java - 在 Java 中解析格式错误的 json

标签 java json parsing

我有一个格式错误的 JSON 字符串需要解析。 JSON 字符串的键不包含在双引号中,字符串值包含在单引号而不是双引号中。

例子:

{ items: [
    { id: 1, name: 'test1' }, 
    { id: 2, name: 'test2' }
] }

解析此 JSON 字符串的更好方法是什么?

1) 编写自定义解析器(如何?)

2) 尝试通过执行几个 string_replace 来修复 JSON 字符串

需要注意的一点是,JSON 字符串很长(大约 50kb)并且包含很多条目。

最佳答案

Yaml 是(几乎)JSon 的 super 集,并且更加宽容。它更接近您的默认设置。

String s = "{ items: [\n" +
        "    { id: 1, name: 'test1' }, \n" +
        "    { id: 2, name: 'test2' }\n" +
        "] }";
Map map = (Map) new Yaml().load(s);
System.out.println(map);

打印

{items=[{id=1, name=test1}, {id=2, name=test2}]}

顺便说一句,这就是它默认转储到 Yaml 的方式。

System.out.println(new Yaml().dump(map));

打印

items:
- {id: 1, name: test1}
- {id: 2, name: test2}

我用了snakeyaml .您还可以将数据绑定(bind)到类

关于java - 在 Java 中解析格式错误的 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23520979/

相关文章:

java - EWS Java - hasAttachments 对于内联/嵌入式附件返回 false

java - 如何将 sdf_predict() 与库 (sparklyr) 中 ml_pca() 提供的模型一起使用

javascript - 当键具有特殊字符时访问 JSON 值

java - ANTLR 解析未找到正确的词法分析器部分

java android 将资源文件路径传递给方法参数

java - Android ImageView 动画很慢

java - 如何告诉 proguard 保持枚举常量和字段

java.lang.string类型的Java值无法转换为jsonobject

javascript - Ember 模型对象已创建但未显示在模板中

wordpress - 解析错误: syntax error, unexpected '}' in header.php on line 57