我正在尝试使用Java中的重复键来解析嵌套的Json。我经历了其他类似的问题,但找不到解决方案。我尝试了使用Jackson流API的方法,但它只打印第一个键的值而忽略第二个重复的键。请帮助。谢谢。

码:

public class JacksonJson {
    public static void main(String args[]) throws IOException {


        /
        JsonFactory factory = new JsonFactory();

        JsonParser parser = factory.createParser(new File("a.json"));
        parser.nextToken();
        while (parser.nextToken() != JsonToken.END_OBJECT) {    //loop until "}"

            String fieldName = parser.getCurrentName();

            if (fieldName.equals("A")) {
                parser.nextToken();
                System.out.println("Value : " + parser.getText());
            }
             /*else { // unexpected token, generate error
                throw new IOException("Unrecognized field '"+fieldName+"'");
            }*/

        }
        parser.close();
    }
    }


Json文件:

{
  "Data": {
    "C": {
      "S": {
        "M": {},
        "A": "first"
      }
    },
    "C": {
      "S": {
        "M": {}
        "A": "Second",

      }
    }
  }
}

最佳答案

来自the JSON specification


  名字是一个
     串。每个名称后都有一个冒号,将名称分开
     从值。单个逗号将值与后跟
     名称。对象中的名称应唯一。


许多JSON库提供了将json映射到对象的功能。考虑一下,如果名称不是唯一的,它们甚至应该如何工作?

当然,您可以尝试自己解析它,并在内部将其重命名为C1,C2 ...,但是更容易接受这种情况。

关于java - 用重复键解析Json,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50578992/

10-16 17:45
查看更多