2013-03-04 17 views
16

Sto provando a contare la lunghezza dell'elemento dell'array JSON. So di contare la lunghezza della matrice usando json.array.length. Quello è bisogno di trovare quello quanti articoli in ogni indice.come contare la lunghezza dell'elemento dell'array JSON

Se il mio array è:

{"shareInfo":[{"id":"1","a":"sss","b":"sss","question":"whi?"}, 
    {"id":"2","a":"sss","b":"sss","question":"whi?"}, 
    {"id":"3","a":"sss","b":"sss","question":"whi?"}, 
    {"id":"4","a":"sss","b":"sss","question":"whi?"}]} 

poi ho bisogno di trovare la lunghezza di {"id":"1","a":"sss","b":"sss","question":"whi?"}. In questo ci sono quattro voci. Ho provato questo con data.shareInfo[i].length. Ma produce errore.

Si prega di qualcuno mi dica come trovare la lunghezza .... Grazie ....

+0

È in JSON o in un array effettivo? – Brad

+0

non esiste un array JSON. c'è JSON ** STRINGS **. se è un array, allora è javascript nativo e non "json". –

risposta

38

Prima di andare a rispondere a leggere questo Documentation volta. Allora capisci chiaramente la risposta.

Prova questo Può funzionare per voi.

Object.keys(data.shareInfo[i]).length 
+0

Grazie ha funzionato per me ... Grazie mille ... –

+0

è supportato solo per IE9 + ... –

9

Prima se l'oggetto hai a che fare con una stringa è allora avete bisogno di analizzarlo quindi capire la lunghezza i tasti:

obj = JSON.parse(jsonString); 
shareInfoLen = Object.keys(obj.shareInfo[0]).length; 
+0

Produce l'errore 'shareInfo' non definito. Ma ho l'array chiamato 'shareInfo' –

+0

@ahjmorton la tua risposta è corretta per gli array' javascript'. Se è json array, deve essere 'Object.keys (data.shareInfo [i]). Length' – james

-1

penso che si dovrebbe cercare

data = {"shareInfo":[{"id":"1","a":"sss","b":"sss","question":"whi?"}, 
{"id":"2","a":"sss","b":"sss","question":"whi?"}, 
{"id":"3","a":"sss","b":"sss","question":"whi?"}, 
{"id":"4","a":"sss","b":"sss","question":"whi?"}]}; 

ShareInfoLength = data.shareInfo.length; 
alert(ShareInfoLength); 
for(var i=0; i<ShareInfoLength; i++) 
{ 
alert(Object.keys(data.shareInfo[i]).length); 
} 
0

Innanzitutto, non esiste un oggetto JSON. JSON è un formato stringa che può essere utilizzato come rappresentazione di un oggetto letterale Javascript.

Dal JSON è una stringa, Javascript verrà trattato come una corda, e non come un oggetto (o un array o qualsiasi altra cosa si sta cercando di usarlo come.)

Ecco un buon riferimento JSON per chiarire questo differenza:

http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/

quindi, se avete bisogno di realizzare il compito citato nella sua interrogazione, l'unica cosa che si può così è scrivere un parser personalizzato, o convertire la stringa JSON a un oggetto. Ci sono diverse librerie per realizzare questo. Guarda http://www.json.org/js.html per un riferimento.

+0

Hai ragione. Ma possiamo passare i valori dal server usando JSONarray. Per archiviare questo dobbiamo creare 'JSONarray' - >> then' toJsonTree' Quindi possiamo convertire 'object' in' String'. Dal lato del cliente riceveremo i risultati come sopra (come array nella domanda). – james

Problemi correlati