Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSON键需要是唯一的吗?_Java_Json_Parsing_Key_Unique - Fatal编程技术网

Java JSON键需要是唯一的吗?

Java JSON键需要是唯一的吗?,java,json,parsing,key,unique,Java,Json,Parsing,Key,Unique,以下问题与我先前提出的一个问题有关: JSON键需要是唯一的吗?例如,我在解析以下XML(使用JSON ME)时遇到问题: 显然,这是因为钥匙必须是唯一的。我只是想知道这是否在所有情况下都是真的。例如,如果我使用的不是JSON ME,我是否能够解析所有这些名称 谢谢。jQuery能够解析它。但是如果你试图访问它,它只是返回最后一个值 退房 因此,我想这是可以解析的,但是如果使用同一个键,该值将被覆盖。如果使用多个同名键,则不会出现“错误”,但在JSON中,最后一个同名键将被使用 在您的例子中,

以下问题与我先前提出的一个问题有关:

JSON键需要是唯一的吗?例如,我在解析以下XML(使用JSON ME)时遇到问题:

显然,这是因为钥匙必须是唯一的。我只是想知道这是否在所有情况下都是真的。例如,如果我使用的不是JSON ME,我是否能够解析所有这些名称


谢谢。

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));
                }
            }
        }
    }