language formatdate fecha español ejemplos configurar json stringify

json - formatdate - datepicker set date



¿Cuál es la forma correcta de formatear "true" en JSON? (1)

Quiero dar una respuesta true simple, pero según various parsers JSON , esto no es JSON válido:

true

Sin embargo, PHP y Javascript actúan como "verdadero", de hecho es válido JSON para true , tanto al codificar como al decodificar:

PHP-

echo json_encode( true ); // outputs: true echo json_decode( true ); // outputs: 1 echo gettype(json_decode( true )); // outputs: boolean

jQuery-

JSON.stringify( true ); // outputs: true jQuery.parseJSON( true ); // outputs: true typeof jQuery.parseJSON( true ); // outputs: boolean

Entonces, ¿cuál es la forma correcta de enviar una respuesta true formateada como JSON? ¿Están todos los validadores equivocados?


Desde el RFC :

Un texto JSON es un objeto o matriz serializado.

JSON-text = object / array

La mayoría de los analizadores no aceptan nada como raíz que no sea un objeto o una matriz. Solo los analizadores menos estrictos aceptarán que su cadena JSON solo contenga true .

Así que tus opciones son

  • no usar JSON
  • para envolver su booleano en un objeto: {"result":true} o una matriz: [true]

Actualizar:

La situación cambió. Las versiones más recientes de la especificación JSON (ver esta ) aceptan explícitamente cualquier valor serializado como raíz de un documento:

Un texto JSON es un valor serializado. Tenga en cuenta que ciertas especificaciones anteriores de JSON restringieron un texto JSON para que fuera un objeto o una matriz. Las implementaciones que generan solo objetos o matrices donde se solicita un texto JSON serán interoperables en el sentido de que todas las implementaciones las aceptarán como textos JSON conformes.

Significa que ahora es legalmente aceptable utilizar un valor booleano como valor único. Pero, por supuesto, no todas las bibliotecas en uso se actualizan, lo que implica que el uso de un objeto o una matriz podría ser problemático.