-1

JSONを操作するためにSuperObjectライブラリを使用しています。

このコードは 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;

sgIngredients - TStringGrid

sgIngredients にはキリル文字が含まれています。したがって、出力ファイルは次のとおりです。

{
"4":["Hello","count"],
"3":["\u0411\u0443\u043b\u044c\u043e\u043d \u043e\u0432\u043e\u0449\u043d\u043e\u0439","\u0441\u0442."],
"2":["\u0411\u0443\u043b\u044c\u043e\u043d \u043a\u0443\u0440\u0438\u043d\u044b\u0439","\u0441\u0442."],
"1":["\u0411\u0435\u043a\u043e\u043d","\u0433\u0440."]
}

データを JSON ファイルに正しく保存するにはどうすればよいですか?

編集

これは私の文字列グリッドのスクリーンショットです。

ここに画像の説明を入力

4

1 に答える 1

3

function TSuperObject.SaveTo(stream: TStream; indent, escape: boolean): integer;ソースを読んで、設定を呼び出すことができますescape := false

繰り返しますが、ソースコードが与えられたライブラリを使用する場合は、「ソースを使用してください、ルーク」だけです

また、JSON を文字列に保存し、エスケープ文字を実際の WideChar 値に置き換えることもできます ( http://UniRed.sf.netまたはhttp://www.sql.ru/forum/936760/perevesti-で行われたように)。 kodirovannye-simvoly-funkciya-v-delphi-analog-iz-js ) を作成し、UTF-8 文字セットを強制しながら、結果の文字列をファイルに保存します。

于 2013-05-29T06:35:04.303 に答える