如何解析未加引号的 JSON 字符串

2022-09-03 15:24:30

我有一个JSON字符串,其中键和值都没有引号,我想将其转换为格式正确的JSON。

{basic:{0:{index:0, license:t, nameSID:n, image:"img_left", descriptionSID:t, category:r}}

有没有一个Java库可以处理它?我尝试过杰克逊,但它不起作用。


答案 1

您可以与 Jackson 一起使用以允许不带引号的字段名称:JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES

JsonFactory factory = new JsonFactory();
factory.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
JsonParser jp = factory.createJsonParser(new FileInputStream("content.json"));

答案 2

不知道你是否开始编写自己的解析器,但我做到了。

https://github.com/ischumacher/rsjp

下面是示例 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"));

下面是输出:

{
   basic: 
   {
      0: 
      {
         index: 0, 
         license: t, 
         nameSID: n, 
         image: img_left, 
         descriptionSID: t, 
         category: r
      }
   }
}

img_left