Java 如何解析无引号的JSON字符串
我有一个JSON字符串,其中既没有引用键也没有引用值,我想将其转换为格式正确的JSONJava 如何解析无引号的JSON字符串,java,json,Java,Json,我有一个JSON字符串,其中既没有引用键也没有引用值,我想将其转换为格式正确的JSON {basic:{0:{index:0, license:t, nameSID:n, image:"img_left", descriptionSID:t, category:r}} 是否有一个Java库可以处理它?我试过了,但不起作用。您可以使用JsonParser.Feature。允许\u UNQUOTED\u FIELD\u NAMES与Jackson一起使用,以允许使用UNQUOT
{basic:{0:{index:0, license:t, nameSID:n, image:"img_left", descriptionSID:t, category:r}}
是否有一个Java库可以处理它?我试过了,但不起作用。您可以使用
JsonParser.Feature。允许\u UNQUOTED\u FIELD\u NAMES
与Jackson一起使用,以允许使用UNQUOTED字段名:
JsonFactory factory = new JsonFactory();
factory.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
JsonParser jp = factory.createJsonParser(new FileInputStream("content.json"));
我不确定你是否有时间写你自己的解析器,但我写了 下面是示例JSON的用法示例:
String str = "{basic:{0:{index:0, license:t, nameSID:n, image:\"img_left\", descriptionSID:t, category:r}}";
Map<String, Object> jso = Json.parseJSON(str);
System.out.println(jso);
System.out.println(Json.get(jso, "basic", "0", "image"));
我研究了如何定制Jackson来处理未引用的字段值(相对于字段名)。尽管我最终写了一篇黑客文章,我还是在这里为其他人发布我的面包屑线索。我的代码探索是在Jackson 2.7.2中完成的 Jackson Core附带了JsonParser接口的两个具体实现:
- ReaderBasedJsonParser,字符流(编码)的解析器 (独立)
- UTF8StreamJsonParser,一个为UTF-8字节优化的解析器 溪流
希望这对其他人有所帮助。我确实使用了它,但对于
“许可证”中的无引号的值或无引号的数字键(例如“0:myValue”):“1,2”
格式错误为许可证:1,2
您建议如何选择解释?我猜你将不得不编写自己的反序列化程序。Jackson的对象映射器
和模块
功能可能会对您有所帮助。在我的情况下,我知道我只有字符串,而没有,
作为值。但是,是的,看起来我必须编写自己的解析器。
{
basic:
{
0:
{
index: 0,
license: t,
nameSID: n,
image: img_left,
descriptionSID: t,
category: r
}
}
}
img_left