Saltar al contenido

¿Cómo imprimo bastante JSON en Delphi?

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *