Es fundamental interpretar el código correctamente previamente a utilizarlo a tu trabajo y si ttienes algo que aportar puedes dejarlo en la sección de comentarios.
Solución:
Si no desea utilizar ninguna biblioteca externa y está utilizando un delphi XE5 o más nuevo, hay una muy útil TJson.Format()
función en el REST.Json
unidad.
uses json, REST.Json;
...
function FormatJSON(json: String): String;
var
tmpJson: TJsonObject;
begin
tmpJson := TJSONObject.ParseJSONValue(json);
Result := TJson.Format(tmpJson);
FreeAndNil(tmpJson);
end;
También puede usar los siguientes métodos de nuestro Open Source SynCommons.pas
unidad:
var json,new: RawUTF8;
begin
json := '"menu": "header": "JSON viewer", "items": ["id": "Delphi","id": "Pascal", "label": "Nice tree format", null]';
new := JSONReformat(json,jsonHumanReadable);
...
Aquí new
contendrá:
"menu":
"header": "JSON viewer",
"items":
[
"id": "Delphi"
,
"id": "Pascal",
"label": "Nice tree format"
,
null
]
Si usas el jsonUnquotedPropName
formato:
new := JSONReformat(json,jsonUnquotedPropName);
obtendrá la siguiente sintaxis extendida (similar a la utilizada en JavaScript o MongoDB caparazón):
menu:
header: "JSON viewer",
items:
[
id: "Delphi"
,
id: "Pascal",
label: "Nice tree format"
,
null
]
Esta sintaxis se acepta como entrada válida para todas las funciones JSON de nuestro marco de código abierto, como alternativa a la sintaxis JSON predeterminada. Lo encontramos bastante útil, por ejemplo, para archivos de configuración.
Tenga en cuenta que nuestro JSONReformat()
La función es muy rápida. Convierte los enormes 190 MB de contenido JSON inconformable de CityLots en 400 MB de JSON embellecido (previsto y con campos de línea) en 1,4 segundos. superobjeto solo puede leerlo en 10 segundos y usa 1.1 GB solo para almacenar los 190 MB de contenido. Y DBXJSON ni siquiera puede cargar los datos: consume toda la memoria de 32 bits; en Win64 (XE6), tarda 50 segundos y usa 3 GB de RAM para leer los 190 MB de JSON. Vea este artículo para algunos números.
Use la biblioteca de superobjetos, asegúrese de usar la última versión del archivo del repositorio, no el ZIP 1.2.4.
Luego puede formatear su objeto TSuperObject con .AsJSON(true)
(la ‘true’ Hace el truco).
[ Note that you have no control over the order in which the JSON fields are displayed ]
[ And to create your object from the string: var lJSON : ISuperObject; lJSON := SO(string);
]
Reseñas y puntuaciones
Recuerda mostrar este enunciado si si solucionó tu problema.