2012-10-06 27 views
18

Nonostante molti googlando e tirando i capelli, non riesco a distinguere la vita da me tra la json, gli oggetti e gli array (in javascript). Di seguito è come ho usato i contenitori di dati bidimensionali (paura di usare le parole "array", "oggetto" o "json" qui). Per favore dimmi cosa sono questi due esempi?oggetti javascript vs matrici vs JSON

//first example: 
[ 
    {"record_id":1,"name":"Frank"}, 
    {"record_id":2,"name":"Sally"} 
] 

//second example: 
{ 
"countries": 
    [ 
    {"id":1,"name":"Canada"}, 
    {"id":2,"name":"Mexico"} 
    ], 
"states": 
    [ 
    "id":1,"name":"Maine"}, 
    {"id":2,"name":"Alaska"} 
    ] 
} 
+0

JSON è dati di testo con codifica UTF-8 disposti in una sequenza di caratteri conforme ai requisiti delle specifiche JSON. Come è stato creato non fa differenza. L'importante è che tu finisca con i dati UTF-8. –

+0

@ user1689607 Nit: [JSON] (http://www.json.org/) * non * specifica una codifica UTF (ma ha un mandato Unicode) - UTF-X è proprio come Unicode è mappato su ottetti e questa codifica succede indipendentemente da JSON. Altrimenti, sì: JSON è un formato * di serializzazione *. –

+0

La codifica * default * :-) Tuttavia, un server può restituire liberamente JSON come UTF-16 (o anche UCS-2 ... forse?) Con le negoziazioni/intestazioni appropriate. –

risposta

49

JSON è una rappresentazione della struttura dati, non è un oggetto o una matrice.

[1,2,3] 

è un array.

{"foo":"bar"} 

è un oggetto.

Nel tuo esempio,

[ 
    {"record_id":1,"name":"Frank"}, 
    {"record_id":2,"name":"Sally"} 
] 

è un array di oggetti.

{ 
    "countries": 
    [ 
     {"id":1,"name":"Canada"}, 
     {"id":2,"name":"Mexico"} 
    ], 
    "states": 
    [ 
     {"id":1,"name":"Maine"}, 
     {"id":2,"name":"Alaska"} 
    ] 
} 

È un oggetto che contiene altri matrici e oggetti al suo interno.

+0

Grazie, Gary. Questa è la spiegazione più chiara che ho incontrato finora. Apprezzalo. – Octavient

0

Beh, credo che gli oggetti possano avere metodi e proprietà mentre gli array non possono. JSON può essere passato al server mentre matrice cant essere, a meno che non si passa come una stringa da POST

+0

Questa risposta potrebbe essere fonte di confusione. JSON può codificare array che possono essere passati al server, proprio come JSON può codificare oggetti che possono essere passati al server. Inoltre, gli oggetti JSON non possono avere metodi, poiché JSON non è un linguaggio di programmazione o di scripting (è un formato di interscambio di dati). – CristosLC

5

Si utilizza { parentesi } per dichiarare un letterale oggetto.

È possibile utilizzare [ parentesi quadre ] per dichiarare un array letterale.

Gli oggetti sono raccolte di coppie di valori nome chiave.

Ecco un esempio di un array di stringhe:

var a = [ "one", "two", "three" ]; 

Ecco un esempio di un semplice oggetto che rappresenta una persona:

var personObject = { 
    name: 'Joe', 
    age: 25, 
    hometown: 'New York'   
}; 
7

JSON è JavaScript Object Notation. Questo è semplicemente un modo per scrivere i tipi di dati JavaScript. Non è un tipo di dati in-and-of-itself.

Vedere di seguito alcuni esempi di tipi di dati JavaScript e la notazione letterale della loro creazione.

JSON può essere utilizzato per inviare dati dal server al browser, ad esempio, perché è facile per JavaScript analizzare in una normale struttura di dati JavaScript.

Nell'esempio, si utilizzano elenchi di oggetti e oggetti di oggetti.

Questa è una lista di 3 oggetti vuoti.

[{}, {}, {}] 

Questa è una lista di tre semplici record:

var mylist = [ 
    {name: 'John', age: 24}, 
    {name: 'Bill', age: 42}, 
    {name: 'Jill', age: 18}, 
    ] 

È possibile accedere in questo modo:

mylist[1].name 
>>> 'Bill' 

mylist[2].age 
>>> 18 

JavaScript ha diversi tipi di dati:

Numero

1 
100 
-2000 
123.45 

String

"Hi John" 
"Message:\nGo Forth" 

booleana

true 
false 

Array

[1,2,3] 
[] 
["a", "b", 123] 
["a", "b", 123, [3,4,5]] 

oggetto

{} 
{a: 10} 
{mylist: [1,2,3], yourlist: [4,5,6]} 
{myself: {name: 'me', age: 10}, yourself: {name: 'you', age: 20}} 
1

JSON è un formato di dati testuali di interscambio. Come suggerisce il suo nome ("JavaScript Object Notation"), deriva da JS; il che significa che JSON è in realtà un JavaScript sintatticamente valido. In altre parole, puoi incollare una stringa JSON direttamente nel tuo codice JS.

Gli array sono oggetti speciali. Possono essere costruiti da [].

Gli oggetti possono essere costruiti tramite {}.

Quindi quello che hai nell'esempio sono due stringhe JSON, una che rappresenta una matrice di oggetti, la seconda che rappresenta un oggetto le cui proprietà sono esse stesse matrici di oggetti.