1,593
社区成员
发帖
与我相关
我的任务
分享
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;