需要引用单元 system.JSON
//创建
function TForm3.GetJson: string;
var
I : Integer;
_OJson, _OJsonItem : TJSONObject;
_OJsonArr : TJSONArray;
begin
_OJson := TJSONObject.Create;
try
try
_OJsonArr := TJSONArray.Create;
_OJson.AddPair('count', 8);
for I := 1 downto 0 do
begin
_OJsonItem := TJSONObject.Create;
_OJsonItem.AddPair('socket', I);
_OJsonItem.AddPair('iLastUseTime', Now);
_OJsonItem.AddPair('info', '你好'+IntToStr(I));
_OJsonArr.Add(_OJsonItem);
// if Assigned(_OJsonItem) then FreeAndNil(_OJsonItem); //在最外层进行释放即可,中间不要释放
end;
_OJson.AddPair('list', _OJsonArr);
Result := _OJson.ToString;
except
on E: Exception do
begin
end;
end;
finally
// if Assigned(_OJsonArr) then FreeAndNil(_OJsonArr);//在最外层进行释放即可,中间不要释放
if Assigned(_OJson) then FreeAndNil(_OJson);
end;
end;
Pascal//读取
procedure TForm3.Button2Click(Sender: TObject);
var
_OJson, _OJsonItem : TJSONValue;
_OJsonArr : TJSONArray;
_sStr : string;
begin
_sStr := Memo1.Lines.Text;
_OJson := TJSONObject.ParseJSONValue(_sStr) as TJSONObject;
try
if _OJson = nil then Exit;
Memo2.Lines.Add(IntToStr(_OJson.GetValue<Integer>('count', 0)));
_OJsonArr := _OJson.GetValue<TJsonArray>('list');
if _OJsonArr = nil then Exit;
for _OJsonItem in _OJsonArr do
begin
if _OJsonItem = nil then Continue;
Memo2.Lines.Add(_OJsonItem.GetValue<string>('socket', 'nil'));
Memo2.Lines.Add(_OJsonItem.GetValue<string>('iLastUseTime', 'nil'));
Memo2.Lines.Add(_OJsonItem.GetValue<string>('info', 'nil'));
end;
finally
if Assigned(_OJson) then FreeAndNil(_OJson);
end;
end;
Pascal使用起来稍微复杂,没有三方库QJSON封装得好~ 还是不够简单;