Le chiavi JSON devono essere uniche?

La seguente domanda è relativa a una domanda che ho chiesto in precedenza: guida l’ analisi semplice di JSON (utilizzando JSON per JAVA ME)

Le chiavi JSON devono essere uniche? Ad esempio, stavo riscontrando problemi nell’analisi del seguente XML (con JSON ME):

{"name" : "JACK","name" : "JILL","name" : "JOHN","name" : "JENNY","name" : "JAMES","name" : "JIM"} 

E, apparentemente, è perché le chiavi devono essere uniche. Mi sto solo chiedendo se questo sia vero in tutti i casi o no. Ad esempio, se stavo usando qualcosa di diverso da JSON ME, sarei in grado di analizzare tutti questi nomi?

Grazie.

    Non c’è “errore” se si utilizza più di una chiave con lo stesso nome, ma in JSON, l’ultima chiave con lo stesso nome è quella che verrà utilizzata.

    Nel tuo caso, il “nome” della chiave sarebbe meglio contenere un array come valore, invece di avere un numero di “nome” per le chiavi. Non ha molto senso che lo stesso object o “cosa” abbia due nomi, o due delle stesse proprietà che sono in conflitto.

    Per esempio:

     { "name" : [ "JOHN", "JACK", "...", ... ] } 

    Da RFC 4627 :

    Una struttura di object è rappresentata come una coppia di parentesi graffe che circondano zero o più coppie nome / valore (o membri). Un nome è una stringa. Un singolo due punti viene dopo ogni nome, separando il nome dal valore. Una singola virgola separa un valore da un nome seguente. I nomi all’interno di un object DOVREBBE essere unici.

    jQuery è in grado di analizzarlo. Ma se provi ad accedervi, restituisce solo l’ultimo valore.

    Dai un’occhiata a http://jsfiddle.net/MQmM4/2/

    Quindi, è analizzabile, suppongo, ma il valore viene sovrascritto se si utilizza la stessa chiave.

    ecco una ansible soluzione usando l’array. basta usare l’indice dell’array

     the_json_array.getJSONObject(0); {"nameList": [{"name" : "JACK"}, {"name" : "JILL"}, {"name" : "JOHN"}, {"name" : "JENNY"}, {"name" : "JAMES"}, {"name" : "JIM"}]} 

    Un object JSON ha il seguente aspetto

     public JSONObject(Map map) { this.map = new HashMap(); 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)); } } } } 

    Un object JSON è fondamentalmente una hashmap contenente una coppia di valori chiave.

    Questo è il motivo per cui ti stai sovrascrivendo ogni volta. Per evitare questo

    1. O devi avere valori chiave univoci
    2. O dovresti racchiudere la coppia di valori chiave come singoli oggetti in una matrice

    Dai un’occhiata a questa implementazione java di JSON Object per conoscere a fondo JSON.