/ / ¿Cómo codificar el archivo json de salida (SuperObject)? - json, delphi, superobjeto

Cómo codificar el archivo de salida json (SuperObject)? - json, delphi, superobject

Estoy usando Superobjeto Biblioteca para trabajar con JSON.

Este código crea JSON:

procedure TfmMain.btnIngredientsSaveClick(Sender: TObject);
var obj: ISuperObject;
i: integer;
begin
try
obj := SO();
for i := 0 to sgIngredients.RowCount - 2 do
begin
obj.O[sgIngredients.Cells[0, i+1]] := SA([]);
obj.A[sgIngredients.Cells[0, i+1]].S[0] := sgIngredients.Cells[1, i+1];
obj.A[sgIngredients.Cells[0, i+1]].S[1] := sgIngredients.Cells[2, i+1];
end;
obj.SaveTo(ExtractFileDir(Application.ExeName)+ingrJSONFile);
finally
obj := nil;
end;
end;

sgIngredientes - TStringGrid

sgIngredients contienen símbolos cirílicos. Así que el archivo de salida es:

{
"4":["Hello","count"],
"3":["u0411u0443u043bu044cu043eu043d u043eu0432u043eu0449u043du043eu0439","u0441u0442."],
"2":["u0411u0443u043bu044cu043eu043d u043au0443u0440u0438u043du044bu0439","u0441u0442."],
"1":["u0411u0435u043au043eu043d","u0433u0440."]
}

¿Cómo guardar correctamente mis datos en el archivo JSON?

EDITAR

Esta es la captura de pantalla de mi grilla de cadena

enter image description here

Respuestas

3 para la respuesta № 1

Leyendo las fuentes, puedes llamar function TSuperObject.SaveTo(stream: TStream; indent, escape: boolean): integer; ajuste escape := false

Puedo decirlo de nuevo, cuando use bibliotecas con su código fuente dado, simplemente "Use the Source, Luke"

Además, puede guardar JSON en una cadena y luego reemplazar los caracteres de escape con valores de WideChar reales (como se hizo en http://UniRed.sf.net o en http://www.sql.ru/forum/936760/perevesti-kodirovannye-simvoly-funkciya-v-delphi-analog-iz-js) y luego guarde la cadena resultante en el archivo mientras aplica el conjunto de caracteres utf-8.