如何通過SuperObject庫以JSON格式存儲記錄數組。例如..以JSON格式存儲記錄數組
type
TData = record
str: string;
int: Integer;
bool: Boolean;
flt: Double;
end;
var
DataArray: Array[0..100] of TData;
如何通過SuperObject庫以JSON格式存儲記錄數組。例如..以JSON格式存儲記錄數組
type
TData = record
str: string;
int: Integer;
bool: Boolean;
flt: Double;
end;
var
DataArray: Array[0..100] of TData;
只需使用超對象編組TSuperRTTIContext
program Project1;
{$APPTYPE CONSOLE}
{$R *.res}
uses
superobject,
System.SysUtils;
type
TData = record
str : string;
int : Integer;
bool : Boolean;
flt : Double;
end;
TDataArray = Array [0 .. 100] of TData;
procedure Test;
var
DataArray : TDataArray;
so : ISuperObject;
ctx : TSuperRttiContext;
begin
ctx := TSuperRttiContext.Create;
try
so := ctx.AsJson<TDataArray>(DataArray);
finally
ctx.Free;
end;
Writeln(so.AsJson);
end;
begin
try
Test;
except
on E : Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
ReadLn;
end.
首先將其設爲字符串。
Your array:
//Array[0] := 'Apple';
//Array[1] := 'Orange';
//Array[2] := 'Banana';
myArrayAsStr := '"MyArray": [{ "1": "' + Array[0] +'", "2": "' + Array[1] +'"}';
然後,你可以讓它變成JSON與SO(myArrayAsStr)
您可以隨時生成您的陣列在不同的程序字符串,但我認爲是這樣做的方式。
虐待繼續檢查,如果有一個更簡單的方法;)
編輯: 超對象還具有以下功能: function SA(const Args: array of const): ISuperObject; overload;
您可以到再次轉換爲字符串,並在總JSON添加它串。
有趣的方式.. – user299323 2013-03-15 10:48:28
只是要注意:結果' 「MYARRAY」:[{ 「1」: 「蘋果」, 「2」: 「橙色」} '是**不是**有效的JSON字符串。它應該是'{「MyArray」:[{「1」:「Apple」,「2」:「Orange」}]}或甚至是[{「1」:「Apple」,「2」 }]' – 2013-03-19 12:22:25
啊右...哎呀..我的壞:P – 2013-03-19 13:01:08
SuperObject的幫助文件有這個確切的例子(也許不是相同的代碼,但與RTTI相同的概念) – 2013-03-15 15:34:57
@JerryDodge也許因爲這是要走的路?如果這種情況被記錄,爲什麼它會不同? – 2013-03-15 15:56:23
我沒有說它應該是不同的,我只是說,因爲OP可以簡單地閱讀庫中附帶的SuperObject的幫助文件,而不是在這裏問。那裏已經解釋了完全相同的解決方案。 – 2013-03-15 16:08:21