本文整理自网络,侵删。
//1)数据集转换为JSON字符串://需USES System.JSON;
function DataSetToJson(ADataset: TDataSet): string;// [{"CityId":"18","CityName":"西安"},{"CityId":"53","CityName":"广州"}]varLRecord: string;LField: TField;i: integer;beginResult := '';if (not ADataset.Active) or (ADataset.IsEmpty) thenExit;Result := '[';ADataset.DisableControls;ADataset.First;while not ADataset.Eof dobeginfor i := 0 to ADataset.FieldCount - 1 dobeginLField := ADataset.Fields[i];if LRecord = '' thenLRecord := '{"' + LField.FieldName + '":"' + LField.Text + '"'elseLRecord := LRecord + ',"' + LField.FieldName + '":"' + LField.Text + '"';if i = ADataset.FieldCount - 1 thenbeginLRecord := LRecord + '}';if Result = '[' thenResult := Result + LRecordelseResult := Result + ',' + LRecord;LRecord := '';end;end;ADataset.Next;end;ADataset.EnableControls;Result := Result + ']';
end;复制代码//2)JSON字符串转换为数据集:
复制代码procedure JsonToDataSet(AJson: string; ADataset: TDataSet);varjDataSet: TJSONArray;jRecord: TJSONObject;i, j: Integer;beginif (AJson = '') or (ADataset = nil) or (not ADataset.Active) thenExit;jDataSet := TJSONObject.Create.ParseJSONValue(AJson, True) as TJSONArray;while not ADataset.Eof doADataset.Delete;for i := 0 to jDataSet.Size - 1 dobeginADataset.Append;jRecord := jDataSet.Get(i) as TJSONObject;for j := 0 to ADataset.FieldCount - 1 doADataset.Fields[j].Text := jRecord.GetValue(ADataset.Fields[j].FieldName).ToString;ADataset.Post;end;end;
相关阅读 >>
Delphi获取dos命令行输出函数 运行cmd命令并获取结果
更多相关阅读请进入《Delphi》频道 >>