Hay formas (hacky) de hacerlo ... pero no deberías.
En JSON, un objeto se define así:
Un objeto es un conjunto desordenado de pares de nombre / valor.
Consulte http://json.org .
La mayoría de las implementaciones de JSON no hacen ningún esfuerzo por preservar el orden de los pares nombre / valor de un objeto, ya que (por definición) no es significativo.
Si desea conservar el orden, debe redefinir su estructura de datos; p.ej
{
"items":
[
[
{"WR":"qwe"},
{"QU":"asd"},
{"QA":"end"},
{"WO":"hasd"},
{"NO":"qwer"}
],
]
}
o más simplemente:
{
"items":
[
{"WR":"qwe"},
{"QU":"asd"},
{"QA":"end"},
{"WO":"hasd"},
{"NO":"qwer"}
]
}
SEGUIMIENTO
Gracias por la información, pero no tengo más remedio que usar JSON en mi aplicación y mi aplicación necesita mantener el orden de las claves independientemente de la definición del objeto JSON ... No puedo cambiar el formato del archivo JSON también...
Necesita tener una conversación dura con quien diseñó esa estructura de archivos y no le permitirá cambiarla. Es / están completamente equivocados. Usted necesita para convencerlos.
Si realmente no te dejan cambiarlo:
- Deberías insistir en no llamarlo JSON ... porque no lo es.
- Debe señalar que tendrá que escribir / modificar código especialmente para manejar este formato "no JSON" ... a menos que pueda encontrar alguna implementación JSON que conserve el orden. Si es un cliente que paga, asegúrese de que pague por este trabajo adicional que tiene que hacer.
- Debe señalar que si el "no JSON" necesita ser utilizado por alguna otra herramienta, será problemático. De hecho, este problema se repetirá una y otra vez ...
Este tipo de cosas son realmente malas. Por un lado, su software violará una especificación bien establecida / de larga data que está diseñada para promover la interoperabilidad. Por otro lado, los imbéciles que diseñaron este formato de archivo poco convincente (¡no JSON!) Probablemente se estén burlando de los sistemas de otras personas, etc. porque los sistemas no pueden hacer frente a sus tonterías.
ACTUALIZAR
También vale la pena leer lo que dice JSON RFC (RFC 7159) sobre este tema. Aquí hay algunos extractos:
En los años transcurridos desde la publicación de RFC 4627, JSON ha encontrado un uso muy amplio. Esta experiencia ha revelado ciertos patrones que, aunque permitidos por sus especificaciones, han causado problemas de interoperabilidad.
La notación de objetos JavaScript (JSON) es un formato de texto para la serialización de datos estructurados. ...
JSON puede representar cuatro tipos primitivos (cadenas, números, booleanos y nulos) y dos tipos estructurados (objetos y matrices).
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.
Se ha observado que las bibliotecas de análisis JSON difieren en cuanto a si hacen visible o no el orden de los miembros del objeto para el software de llamada. Las implementaciones cuyo comportamiento no dependa del orden de los miembros serán interoperables en el sentido de que no se verán afectadas por estas diferencias.