zoukankan      html  css  js  c++  java
  • Delphi DataSet和JSON互转函数

    一、DataSet转JSON

    //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

    //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;
    


  • 相关阅读:
    dblink
    linux 查进程、杀进程、起进程
    oracle 资源统计SQL语句
    DIV+CSS+javascript 手动轮播图
    接受同步数据接口
    java String StringBuffer StringBuilder
    SpringMVC Servlet 分页查询接收参数
    WPF 开发
    收集整理的各地精品青年旅舍大全(
    Linux平台Java调用so库JNI使用例子
  • 原文地址:https://www.cnblogs.com/xieyunc/p/9126493.html
Copyright © 2011-2022 走看看