Java 使用重复键解析json

Java 使用重复键解析json,java,json,Java,Json,我正在尝试解析Json文件,该文件包含java中的重复键。我正在使用此答案中建议的方法。 如果我硬编码Json,这种方法可以很好地工作,但是如果我从文件中读取Json,则只读取最后一个重复的密钥。请帮助我,因为我想从文件中读取Json。提前感谢。 代码: Json文件: { "Data": { "A": { "B": { "C": "c", "D": {} }, "E": { "F": "f"

我正在尝试解析Json文件,该文件包含java中的重复键。我正在使用此答案中建议的方法。 如果我硬编码Json,这种方法可以很好地工作,但是如果我从文件中读取Json,则只读取最后一个重复的密钥。请帮助我,因为我想从文件中读取Json。提前感谢。 代码:

Json文件:

{
  "Data": {
    "A": {
      "B": {
        "C": "c",
        "D": {}
      },
      "E": {
        "F": "f"
      },
      "G": {
        "H": "h"
      }
    },"A": {
      "B": {
        "C": "x",
        "D": {}
      },
      "E": {
        "F": "y"
      },
      "G": {
        "H": "z"
      }
    },

  }
}
输出:

Json objects are:::{"Data":{"A":{"B":{"C":"x","D":{}},"E":{"F":"y"},"G":{"H":"z"}}}}
Json objects are:::{"Data":{"A":[{"B":{"C":"c","D":{}},"E":{"F":"f"},"G":{"H":"h"}},{"B":{"C":"x","D":{}},"E":{"F":"y"},"G":{"H":"z"}}]}}

您需要对JSON对象进行字符串化

a.toString()

如果您没有使用外部JSON库的约束,那么您可以使用
net.sf.JSON.JSONObject
解析JSON字符串,它将接受带有重复键的JSON。它将通过将重复的值存储到数组中来保留这些值

JSONObject jsonObject = JSONObject.fromObject( "{\"Data\": {\"A\": {\"B\": {\"C\": \"c\",\"D\": {}},\"E\": {\"F\": \"f\"},\"G\": {\"H\": \"h\"}},\"A\": {\"B\": {\"C\": \"x\",\"D\": {}},\"E\": {\"F\": \"y\"},\"G\": {\"H\": \"z\"}}}}" );
System.out.println( "net.sf.json.JSONObject: " + jsonObject );

JSON仍然使用键值方法。键总是唯一的,所以有重复的键是没有意义的。我知道,但我必须使用具有重复键的json。我正在使用它。但我不想硬编码它,而是想从文件中读取它。当我这样做时,我无法获得相同的结果。
JSONObject jsonObject = JSONObject.fromObject( "{\"Data\": {\"A\": {\"B\": {\"C\": \"c\",\"D\": {}},\"E\": {\"F\": \"f\"},\"G\": {\"H\": \"h\"}},\"A\": {\"B\": {\"C\": \"x\",\"D\": {}},\"E\": {\"F\": \"y\"},\"G\": {\"H\": \"z\"}}}}" );
System.out.println( "net.sf.json.JSONObject: " + jsonObject );