¿Cómo se representa un conjunto de cadenas JSON?

184

Esto es todo lo que necesitas para un JSON válido, ¿verdad?

["somestring1", "somestring2"]
finneycanhelp
fuente
66
Esa es una matriz JSON que contiene dos cadenas, sí ... ¿hay más a esa pregunta? ;)
Ciudad
Leí algo que contradecía lo que todos estamos de acuerdo. Entonces, quería ver la realidad allí. ¡Gracias!
finneycanhelp
44
¡Ah, ya veo! Es una pena que no puedas aceptar tu propia pregunta como respuesta: D
Town
:) Bueno, no solo las respuestas son divertidas. ¡Son grandes personas como usted las que ayudan a que este sitio sea un éxito divertido!
finneycanhelp

Respuestas:

298

Explicaré un poco más sobre la increíble respuesta de ChrisR y traeré imágenes de su increíble referencia .

Un JSON válido siempre comienza con llaves {o corchetes [, nada más.

{comenzará un object:

llave izquierda seguida de una cadena de clave (un nombre que no se puede repetir, entre comillas), dos puntos y un valor (los tipos válidos se muestran a continuación), seguidos de una coma opcional para agregar más pares de cadena y valor a voluntad y terminaron con una llave derecha

{ "key": value, "another key": value }

Sugerencia : aunque JavaScript acepta comillas simples ', JSON solo acepta las dobles ".

[comenzará un array:

corchete izquierdo seguido de valor, coma opcional para agregar más valor a voluntad y terminado con un corchete derecho

[value, value]

Sugerencia : los espacios entre elementos siempre son ignorados por cualquier analizador JSON.

Y valuees una object, array, string, number, boolo null:

Imagen que muestra los 6 tipos que puede ser un valor JSON: cadena, número, objeto JSON, matriz / lista, booleano y nulo

Entonces sí, ["a", "b"]es un JSON perfectamente válido, como podría probar en el enlace que Manish señaló .

Aquí hay algunos ejemplos de JSON adicionales válidos, uno por bloque:

{}

[0]

{"__comment": "json doesn't accept comments and you should not be commenting even in this way", "avoid!": "also, never add more than one key per line, like this"}

[{   "why":null} ]

{
  "not true": [0, false],
  "true": true,
  "not null": [0, 1, false, true, {
    "obj": null
  }, "a string"]
}
cregox
fuente
22
Representación de la interfaz de usuario tan impresionante
shridutt kothari
¿JSON tiene que tener comillas dobles? Traté de validar la cadena de OP anterior pero con comillas simples en jsonlint.com y me dice que no es válida. Pero es válido cuando se usan comillas dobles.
Ray
@Ray como siempre, eso no tiene una respuesta simple de sí o no, aunque yo diría que es principalmente "sí, solo entre comillas dobles". json.org solo nos dice sobre el uso de comillas dobles, y la mayoría de los lugares probablemente seguirán eso. Sin embargo, aquí hay una investigación más profunda al respecto: stackoverflow.com/a/2275428/274502
cregox
61

Su objeto JSON en este caso es una lista. JSON es casi siempre un objeto con atributos; un conjunto de uno o más pares clave: valor, por lo que lo más probable es que vea un diccionario:

{ "MyStringArray" : ["somestring1", "somestring2"] }

entonces puede solicitar el valor de "MyStringArray"y obtendrá una lista de dos cadenas, "somestring1"y "somestring2".

Papá Pitufo
fuente
12
El ejemplo de código que publicó no es válido, cuando intente analizar esa cadena como un json arrojará un error / excepción. El hecho de que diga que JSON es siempre pares clave / valor también es intrínsecamente incorrecto. Nada en la especificación JSON dice que NECESITA tener pares clave / valor. Cuando hablamos de transporte de datos, los pares clave / valor son la estructura más útil, pero la cadena que publicó el OP es perfectamente válida JSON: codebeautify.org/jsonviewer/92ac7b
ChrisR
1
Tenía API's en el cerebro, donde desea buscar el valor en una matriz basada en una clave. Entonces sería, para una matriz sin nombre, {"1": "somestring1", "2": "somestring2"}
PapaSmurf
41

Básicamente sí, JSON es solo una representación literal de JavaScript de su valor, por lo que lo que dijo es correcto.

Puede encontrar una explicación bastante clara y buena de la notación JSON en http://json.org/

ChrisR
fuente
5
String strJson="{\"Employee\":
[{\"id\":\"101\",\"name\":\"Pushkar\",\"salary\":\"5000\"},
{\"id\":\"102\",\"name\":\"Rahul\",\"salary\":\"4000\"},
{\"id\":\"103\",\"name\":\"tanveer\",\"salary\":\"56678\"}]}";

Este es un ejemplo de una cadena JSON con un Employeeobjeto, luego múltiples cadenas y valores en una matriz como referencia para @cregox...

Un poco complicado, pero puede explicar mucho en una sola cadena JSON.

Pushkar Shrivastava
fuente