Si ya conoce JavaScript (lenguaje de programación), es trivial porque JSON es JS válido. Si no lo haces, aquí hay una explicación rápida:
Desde el RFC [1]:
JSON puede representar cuatro tipos primitivos (cadenas, números, valores booleanos y nulos) y dos tipos estructurados (objetos y matrices).
Una cadena es una secuencia de cero o más caracteres Unicode.
- ¿Cuáles son las 10 mejores escuelas de español en España para extranjeros adultos jóvenes?
- ¿Cómo se aprenden las habilidades básicas de enseñanza?
- ¿Qué idiomas hablados debería uno aprender a sentirse seguro en cualquier lugar?
- ¿Qué debo saber / aprender antes de comenzar a aprender Photoshop en línea?
- ¿Qué grandes lecciones hemos aprendido de la historia?
Un objeto es una colección desordenada de cero o más pares de nombre / valor, donde un nombre es una cadena y un valor es una cadena, número, booleano, nulo, objeto o matriz.
Una matriz es una secuencia ordenada de cero o más valores.
Los términos “objeto” y “matriz” provienen de las convenciones de JavaScript.
Los objetos JSON son similares a hashes (Ruby), diccionarios (Python), mapas (Java) o matrices asociativas (PHP (lenguaje de programación)).
Los objetos se escriben como abajo:
{ "key1" : "value1", "key2" : "value2", "etc" : "etc" }
La sangría y los espacios no son importantes, también puede escribirlos como a continuación:
{"key1":"value1","key2":"value2","etc":"etc"}
Entonces, un objeto comienza con un corchete (
), luego uno o más pares de clave / valor separados por dos puntos (:), y un corchete de cierre ( {
). Puede tener objetos vacíos (por ejemplo, }
), y cada valor puede ser un objeto, por lo que puede anidar objetos, por ejemplo: {}
{ "my_object" : { "foo" : "bar" } }
Las matrices son solo listas ordenadas de valores, y están delimitadas por corchetes (
y [
), por ejemplo: ]
[1, 2, 3]
Puedes mezclar tipos:
[1, "foo", 42.5, false, -18, [1, 2], {}, null, true]
Entonces, básicamente, cuando miras un resultado JSON, si ves un corchete de apertura, es un objeto con algunos atributos (claves / valores), y cuando ves un corchete de apertura, es una matriz.
Aquí hay un ejemplo del mundo real, seleccionado de la documentación de la API de Twitter [2]:
{ "completed_in": 0.012, "max_id": 136536013832069120, "max_id_str": "136536013832069120", "next_page": "?page=2&max_id=136536013832069120&q=twitterapi&rpp=1", "page": 1, "query": "twitterapi", "refresh_url": "?since_id=136536013832069120&q=twitterapi", "results": [ { "created_at": "Tue, 15 Nov 2011 20:08:17 +0000", "from_user": "fakekurrik", "from_user_id": 370773112, "from_user_id_str": "370773112", "from_user_name": "fakekurrik", "geo": null, "id": 136536013832069120, "id_str": "136536013832069120", "iso_language_code": "en", "metadata": { "result_type": "recent" }, "profile_image_url": "http://…/phatkicks_normal.jpg", "source": "<a href="http://twitter.com/">web</a>", "text": "@twitterapi, keep on keeping it real", "to_user": "twitterapi", "to_user_id": 6253282, "to_user_id_str": "6253282", "to_user_name": "Twitter API" } ], "results_per_page": 1, "since_id": 0, "since_id_str": "0" }
En la línea 1, hay un corchete de apertura, por lo que este es un objeto. Luego, (líneas 2 a 8), podemos ver que este objeto tiene algunos atributos, como ” completed_in
” que es un número flotante, o ” next_page
” que es una cadena. En la línea 9, podemos ver que el atributo ” results
” es una matriz, y podemos ver que contiene solo un elemento, que es un objeto (líneas 10 a 30). Este objeto tiene un atributo de objeto (líneas 20 a 22).
–
1: http://www.ietf.org/rfc/rfc4627
2: https://dev.twitter.com/docs/api…