Java JSON键需要是唯一的吗?
以下问题与我先前提出的一个问题有关: JSON键需要是唯一的吗?例如,我在解析以下XML(使用JSON ME)时遇到问题: 显然,这是因为钥匙必须是唯一的。我只是想知道这是否在所有情况下都是真的。例如,如果我使用的不是JSON ME,我是否能够解析所有这些名称Java JSON键需要是唯一的吗?,java,json,parsing,key,unique,Java,Json,Parsing,Key,Unique,以下问题与我先前提出的一个问题有关: JSON键需要是唯一的吗?例如,我在解析以下XML(使用JSON ME)时遇到问题: 显然,这是因为钥匙必须是唯一的。我只是想知道这是否在所有情况下都是真的。例如,如果我使用的不是JSON ME,我是否能够解析所有这些名称 谢谢。jQuery能够解析它。但是如果你试图访问它,它只是返回最后一个值 退房 因此,我想这是可以解析的,但是如果使用同一个键,该值将被覆盖。如果使用多个同名键,则不会出现“错误”,但在JSON中,最后一个同名键将被使用 在您的例子中,
谢谢。jQuery能够解析它。但是如果你试图访问它,它只是返回最后一个值 退房 因此,我想这是可以解析的,但是如果使用同一个键,该值将被覆盖。如果使用多个同名键,则不会出现“错误”,但在JSON中,最后一个同名键将被使用 在您的例子中,键“name”最好包含一个数组作为它的值,而不是包含多个键“name”。同一个对象或“对象”有两个名称,或两个相同的属性冲突,这没有多大意义 例如:
下面是一个使用数组的可能解决方案。只需使用数组索引
the_json_array.getJSONObject(0);
{"nameList":
[{"name" : "JACK"},
{"name" : "JILL"},
{"name" : "JOHN"},
{"name" : "JENNY"},
{"name" : "JAMES"},
{"name" : "JIM"}]}
发件人:
对象结构表示为一对花括号
围绕零个或多个名称/值对(或成员)。一个名字就是一个名字
一串每个名称后面都有一个冒号,用于分隔名称
从价值上来说。一个逗号将一个值与后面的值分隔开
名字对象中的名称应该是唯一的。
JSON对象如下所示
public JSONObject(Map<?, ?> map) {
this.map = new HashMap<String, Object>();
if (map != null) {
for (final Entry<?, ?> e : map.entrySet()) {
final Object value = e.getValue();
if (value != null) {
this.map.put(String.valueOf(e.getKey()), wrap(value));
}
}
}
}
publicJSONObject(映射){
this.map=新的HashMap();
if(map!=null){
对于(最终条目e:map.entrySet()){
最终对象值=e.getValue();
if(值!=null){
this.map.put(String.valueOf(e.getKey()),wrap(value));
}
}
}
}
JSON对象基本上是包含键值对的hashmap
这就是为什么每次都会被覆盖。为了避免这种情况
看看这篇文章,深入了解JSON。上面说“对象中的名称应该是唯一的”,所以实现会有所不同。你可能会发现有一个更宽松的规则。RFC4627被RFC7159淘汰,并且说的几乎相同。您的答案涉及一个特定实现的行为,而不是JSON标准。
但在JSON中,最后一个同名的键就是要使用的键。
请参考?
the_json_array.getJSONObject(0);
{"nameList":
[{"name" : "JACK"},
{"name" : "JILL"},
{"name" : "JOHN"},
{"name" : "JENNY"},
{"name" : "JAMES"},
{"name" : "JIM"}]}
public JSONObject(Map<?, ?> map) {
this.map = new HashMap<String, Object>();
if (map != null) {
for (final Entry<?, ?> e : map.entrySet()) {
final Object value = e.getValue();
if (value != null) {
this.map.put(String.valueOf(e.getKey()), wrap(value));
}
}
}
}