2013-05-29 74 views
-1

我正在使用SuperObject用於使用JSON的庫。如何編碼輸出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文件?

編輯

這是我的弦格的屏幕截圖。

enter image description here

+0

你有什麼問題?輸出文件是否產生不良結果?你期待什麼結果?你在這個字符串網格中有什麼數據? –

+0

@JerryDodge:更新 – Romowski

+0

是什麼讓你覺得它不正確?它對我來說很好。 –

回答

3

讀來源,你可以調用function TSuperObject.SaveTo(stream: TStream; indent, escape: boolean): integer;設置escape := false

我可以再說一遍,用給定他們的源代碼庫的時候,只是「使用源代碼,盧克」

此外,你可以將JSON保存爲字符串,然後用實際的WideChar值替換轉義字符(例如在http://UniRed.sf.nethttp://www.sql.ru/forum/936760/perevesti-kodirovannye-simvoly-funkciya-v-delphi-analog-iz-js中完成),然後在執行時將結果字符串保存到文件UTF-8字符集。