ChatGPT: delphi rtti访问类公共属性生成json字符串

作者: cnpim CNPIM 2023年06月09日

uses  System.Rtti, System.JSON;type  TPerson = class  public    Name: string;    Age: Integer;  end;function ObjectToJSON(AObject: TObject): string;var  Context: TRttiContext;  RttiType: TRttiType;  Prop: TRttiProperty;  Value: TValue;  JsonObject: TJSONObject;begin  Context := TRttiContext.Create;  try    RttiType := Context.GetType(AObject.ClassType);    JsonObject := TJSONObject.Create;    try      for Prop in RttiType.GetProperties do      begin        if Prop.IsReadable then        begin          Value := Prop.GetValue(AObject);          JsonObject.AddPair(Prop.Name, Value.AsString);        end;      end;      Result := JsonObject.ToString;    finally      JsonObject.Free;    end;  finally    Context.Free;  end;end;var  Person: TPerson;begin  Person := TPerson.Create;  try    Person.Name := 'John Doe';    Person.Age := 30;    WriteLn(ObjectToJSON(Person));  finally    Person.Free;  end;end.

这段代码使用了 RTTI 来获取类的公共属性,并将其值添加到一个 JSON 对象中。最后,将 JSON 对象转换为字符串并返回结果。


本文阅读量:

声明:本信息来源于网络,仅用于学习和技术交流,如有侵权或其他问题,请联系本站处理。

技术支持:CNPIM.COM