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