DELPHI 中dataset 与JSON 相互转换的问题?

microd 2014-10-03 09:14:32
DELPHI 中dataset 与JSON 相互转换的问题?哪位大侠给个成功的DEMO,网上的好多都是没法使用的。
谢谢!
...全文
917 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Blessed_Chuan 2014-10-14
  • 打赏
  • 举报
回复
上面的基本都能通用吧 可以自己修改适合自己的
缘中人 2014-10-14
  • 打赏
  • 举报
回复
能有通用函数吗
Blessed_Chuan 2014-10-14
  • 打赏
  • 举报
回复
使用superobject

class function TTableJSon.JSonFromDataSet(DataSet: TDataSet;
  tableName: string): string;
var
  sj,aj,sj2:ISuperObject;
  i:Integer;
begin
  sj := SO();
  try
    //创建数据集的数据
    DataSet.DisableControls;
    DataSet.First;
    aj := SA([]);
    while not DataSet.Eof do
    begin
      sj2 := SO();
      for i := 0 to DataSet.FieldCount - 1 do
      begin
        if VarIsNull(DataSet.Fields[i].Value) then
          sj2.O[DataSet.Fields[i].FieldName] := SO(Null)
        else
        begin
          CreateJsonValueByField(sj2,DataSet.Fields[i]);
        end;
      end;
      aj.AsArray.Add(sj2);
      DataSet.Next;
    end;
    sj.O[tableName] := aj;

    Result := sj.AsString;
  finally
    DataSet.EnableControls;
  end;
end;
class function TTableJSon.CreateJsonValueByField(Json: ISuperObject;Field: TField): Boolean;
begin
  try
    if (Field Is TDateTimeField) or(Field is TSQLTimeStampField) then
        Json.O[Field.FieldName] := SO(Field.AsDateTime)
    else if Field is TBlobField then
        Json.S[Field.FieldName] := EncodeString(Field.AsString)
    else
        Json.O[Field.FieldName] := SO(Field.Value);
    Result := True;
  except
    Result:=False;
  end;
lyhoo163 2014-10-05
  • 打赏
  • 举报
回复
建议,学习JSON的格式标准,自己写吧。

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧