Delphi DataSet和JSON互转函数

    xiaoxiao2021-04-18  109

    、DataSet转JSON

     

    [delphi] view plain copy  print?

    //1)数据集转换为JSON字符串:  //需USES System.JSON;    function DataSetToJson(ADataset: TDataSet): string;  // [{"CityId":"18","CityName":"西安"},{"CityId":"53","CityName":"广州"}]  var    LRecord: string;    LField: TField;    i: integer;  begin    Result := '';    if (not ADataset.Active) or (ADataset.IsEmpty) then      Exit;    Result := '[';    ADataset.DisableControls;    ADataset.First;    while not ADataset.Eof do    begin      for i := 0 to ADataset.FieldCount - 1 do      begin        LField := ADataset.Fields[i];        if LRecord = '' then          LRecord := '{"' + LField.FieldName + '":"' + LField.Text + '"'        else          LRecord := LRecord + ',"' + LField.FieldName + '":"' + LField.Text + '"';        if i = ADataset.FieldCount - 1 then        begin          LRecord := LRecord + '}';          if Result = '[' then            Result := Result + LRecord          else            Result := Result + ',' + LRecord;          LRecord := '';        end;      end;      ADataset.Next;    end;    ADataset.EnableControls;    Result := Result + ']';  end;  

     

     

     

     

     

    二、JSON转DataSet

     

    [delphi] view plain copy  print?

    //2)JSON字符串转换为数据集:    procedure JsonToDataSet(AJson: string; ADataset: TDataSet);  var    jDataSet: TJSONArray;    jRecord: TJSONObject;    i, j: Integer;  begin    if (AJson = '') or (ADataset = nil) or (not ADataset.Active) then      Exit;    jDataSet := TJSONObject.Create.ParseJSONValue(AJson, True) as TJSONArray;    while not ADataset.Eof do      ADataset.Delete;    for i := 0 to jDataSet.Size - 1 do    begin      ADataset.Append;      jRecord := jDataSet.Get(i) as TJSONObject;      for j := 0 to ADataset.FieldCount - 1 do        ADataset.Fields[j].Text := jRecord.GetValue(ADataset.Fields[j].FieldName).ToString;      ADataset.Post;    end;  end;  
    转载请注明原文地址: https://ju.6miu.com/read-675521.html

    最新回复(0)