gpt4 book ai didi

json - SuperObject 序列化私有(private)变量而不是属性

转载 作者:行者123 更新时间:2023-12-03 15:58:30 26 4
gpt4 key购买 nike

我有以下代码来序列化动态类数组。由于某种原因,SuperObject 序列化的是私有(private)变量而不是类属性名称。任何人都可以建议如何修复 SuperObject 中的此行为吗?

class function TJSON.AsJSON<T>(AObject: T; Indent: Boolean = False): string;
var
Ctx: TSuperRttiContext;
begin
Ctx := TSuperRttiContext.Create;
try
Result := Ctx.AsJson<T>(AObject).AsJSon(Indent);
finally
Ctx.Free;
end;
end;

type
TMyClass = class
private
FName_: String;
FAge_: Integer;
public
property Name: String read FName_ write FName_;
property Age: Integer read FAge_ write FAge_;
end;

procedure TFormTest.Button27Click(Sender: TObject);
var
MyClassArray: TArray<TMyClass>;
MyClass1, MyClass2: TMyClass;
begin
MyClass1 := TMyClass.Create;
MyClass1.Name := 'Joe';
MyClass1.Age := 10;

MyClass2 := TMyClass.Create;
MyClass2.Name := 'Dan';
MyClass2.Age := 13;

SetLength(MyClassArray, 2);
MyClassArray[0] := MyClass1;
MyClassArray[1] := MyClass2;

Memo1.Text := TJSON.AsJSON<TArray<TMyClass>>(MyClassArray);
end;

上面的代码生成以下 JSON:

[{"FName_":"Joe","FAge_":10},{"FName_":"Dan","FAge_":13}]

我想要的是以下 JSON:

[{"Name":"Joe","Age":10},{"Name":"Dan","Age":13}]

最佳答案

我认为目前这是不可能的,您可能会点击 this issue 。甚至 Delphi XE2 Datasnap serializes private JSON 编码中的字段,在我看来,这只是在不考虑限制的情况下为新的扩展 RTTI 提供更深入可见性的结果。

关于json - SuperObject 序列化私有(private)变量而不是属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10793507/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com