2012-10-06 4 views
18

Trotz viel Googeln und Haare ziehen, kann ich nicht für das Leben von mir artikulieren den Unterschied zwischen JSON, Objekte und Arrays (in Javascript). Im Folgenden verwende ich zweidimensionale Datencontainer (ich habe Angst, hier die Wörter "array", "object" oder "json" zu verwenden). Bitte sagen Sie mir, was diese zwei Beispiele sind?JavaScript-Objekte vs Arrays 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 ist UTF-8-codierte Textdaten, die in einer Zeichenfolge angeordnet sind, die den Anforderungen der JSON-Spezifikation entspricht. Wie es erstellt wird, macht keinen Unterschied. Das Wichtigste ist, dass Sie UTF-8-Daten erhalten. –

+0

@ user1689607 Nit: [JSON] (http://www.json.org/) * spezifiziert * keine UTF-Kodierung (aber Unicode wird beauftragt) - UTF-X ist genau wie Unicode auf Oktetts und diese Kodierung abgebildet wird geschieht unabhängig von JSON. Ansonsten, ja: JSON ist ein * Serialisierungs * -Format. –

+0

Die * default * -Kodierung :-) Allerdings kann ein Server JSON als UTF-16 (oder auch UCS-2 .. vielleicht?) Mit den entsprechenden Negotiation/Headern frei senden. –

Antwort

49

JSON ist eine Darstellung der Datenstruktur, es ist kein Objekt oder ein Array.

[1,2,3] 

ist ein Array.

{"foo":"bar"} 

ist ein Objekt.

In Ihrem Beispiel

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

ist ein Array von Objekten.

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

Ist ein Objekt, das andere Arrays und Objekte enthält.

+0

Danke, Gary. Dies ist die klarste Erklärung, die ich bisher gefunden habe. Bin dankbar. – Octavient

0

Nun, ich glaube, dass Objekte Methoden und Eigenschaften haben können, während Arrays cant. JSON kann an den Server übergeben werden, während Array kann nicht sein, wenn Sie es als eine Zeichenfolge von POST passieren

+0

Diese Antwort kann verwirrend sein. JSON kann Arrays codieren, die an den Server übergeben werden können, genauso wie JSON Objekte kodieren kann, die an den Server übergeben werden können. JSON-Objekte können auch keine Methoden haben, da JSON keine Skript- oder Programmiersprache ist (es ist ein Datenaustauschformat). – CristosLC

5

Sie verwenden { Klammern } ein Objektliteral zu erklären.

Sie verwenden [ eckige Klammern ], um ein Array-Literal zu deklarieren.

Objekte sind Sammlungen von Schlüssel-Name-Wert-Paaren.

Hier ist ein Beispiel für ein Array von Strings:

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

Hier ein Beispiel für ein einfaches Objekt ist, das eine Person darstellt:

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

JSON ist JavaScript Object Notation. Dies ist einfach eine Möglichkeit, JavaScript-Datentypen aufzuschreiben. Es ist kein Datentyp an und für sich.

Im Folgenden finden Sie einige Beispiele für JavaScript-Datentypen und die literale Notation ihrer Erstellung.

JSON kann verwendet werden, um Daten vom Server zum Browser zu senden, zum Beispiel, weil es einfach ist, JavaScript in eine normale JavaScript-Datenstruktur zu zerlegen.

In Ihrem Beispiel verwenden Sie Listen von Objekten und Objekten von Objekten.

Dies ist eine Liste von 3 leeren Objekten.

[{}, {}, {}] 

Dies ist eine Liste von drei einfachen Datensätze:

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

mylist[2].age 
>>> 18 

JavaScript verfügt über mehrere Datentypen:

Anzahl

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

Sie es wie folgt zugreifen können

1 
100 
-2000 
123.45 

String

"Hi John" 
"Message:\nGo Forth" 

Boolean

true 
false 

Array

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

Objekt

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

JSON ist ein Datenaustauschformat Text. Wie sein Name ("JavaScript Object Notation") andeutet, stammt er von JS; was bedeutet, dass JSON tatsächlich syntaktisch gültiges JavaScript ist. Mit anderen Worten, Sie können eine JSON-Zeichenfolge direkt in Ihren JS-Code einfügen.

Arrays sind spezielle Objekte. Sie können durch [] konstruiert werden.

Objekte können über {} konstruiert werden.

Sie haben also in Ihrem Beispiel zwei JSON-Strings, von denen einer für ein Array von Objekten steht und der zweite ein Objekt, dessen Eigenschaften Arrays von Objekten sind.