2012-10-06 19 views
18

A pesar de mucho Google y tirar del pelo, no puedo expresar la diferencia entre json, objetos y matrices (en javascript). A continuación se muestra cómo he estado usando contenedores de datos bidimensionales (temo usar aquí las palabras "matriz", "objeto" o "json"). Por favor dime cuales son estos dos ejemplos?javascript objects vs matrices 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 es un texto con codificación UTF-8 presentado en una secuencia de caracteres que cumple con los requisitos de la especificación JSON. Cómo se crea no hace diferencia. Lo importante es que termines con datos UTF-8. –

+0

@ user1689607 Nit: [JSON] (http://www.json.org/) * no * especifica una codificación UTF (pero obliga a Unicode) - UTF-X es exactamente cómo se mapea Unicode en octetos y esta codificación sucede independientemente de JSON. De lo contrario, sí: JSON es un formato de * serialización *. –

+0

La codificación * default * :-) Sin embargo, un servidor puede enviar libremente JSON como UTF-16 (o incluso UCS-2 ... ¿tal vez?) Con los correspondientes encabezados/negociación. –

Respuesta

49

JSON es una representación de la estructura de datos, no es un objeto o una matriz.

[1,2,3] 

es una matriz.

{"foo":"bar"} 

es un objeto.

En su ejemplo,

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

es un conjunto de objetos.

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

Es un objeto que contiene otras matrices y objetos dentro de él.

+0

Gracias, Gary. Esta es la explicación más clara que he encontrado hasta ahora. Lo aprecio. – Octavient

0

Bueno, creo que los objetos pueden tener métodos y propiedades mientras que las matrices no pueden. JSON se puede pasar al servidor cuando matriz no puedo ser, a menos que se le pasa como una cadena de la POST-

+0

Esta respuesta puede ser confusa. JSON puede codificar matrices que pueden pasarse al servidor, del mismo modo que JSON puede codificar objetos que pueden pasarse al servidor. Además, los objetos JSON no pueden tener métodos, ya que JSON no es un script o un lenguaje de programación (es un formato de intercambio de datos). – CristosLC

5

Se utiliza { apoyos } a declarar un objeto literal .

Se utilizan [ corchetes ] a declarar una matriz literal .

Los objetos son colecciones de pares de valores de nombres clave.

Aquí está un ejemplo de una matriz de cadenas:

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

Aquí hay un ejemplo de un objeto simple que representa a una persona:

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

JSON es JavaScript Object Notation. Esta es simplemente una forma de escribir tipos de datos de JavaScript. No es un tipo de datos en sí mismo.

Vea a continuación algunos ejemplos de tipos de datos de JavaScript y la notación literal de crearlos.

JSON se puede utilizar para enviar datos desde el servidor al navegador, por ejemplo, porque es fácil de analizar en JavaScript en una estructura de datos de JavaScript normal.

En su ejemplo, está utilizando listas de objetos y objetos de objetos.

Esta es una lista de 3 objetos vacíos.

[{}, {}, {}] 

Esta es una lista de tres discos simples:

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

puede acceder a él de esta manera:

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

mylist[2].age 
>>> 18 

JavaScript tiene varios tipos de datos:

Número

1 
100 
-2000 
123.45 

cadena

"Hi John" 
"Message:\nGo Forth" 

Boolean

true 
false 

matriz de

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

objeto

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

JSON es un formato de datos textual intercambio. Como su nombre ("JavaScript Object Notation") sugiere, se origina de JS; lo que significa que JSON es realmente JavaScript sintácticamente válido. En otras palabras, puede pegar una cadena JSON directamente en su código JS.

Las matrices son objetos especiales. Se pueden construir por [].

Los objetos pueden construirse a través de {}.

Así que lo que tienes en tu ejemplo son dos cadenas JSON, una que representa una matriz de objetos, la segunda representa un objeto cuyas propiedades son ellas mismas matrices de objetos.