【发布时间】:2019-09-24 14:25:44
【问题描述】:
在将 Json 字符串转换为我自己的对象时遇到了一些问题。我举个例子:
我的班级:
TClasse = class
private
Fid: integer;
Fnome: string;
procedure Setid(const Value: integer);
procedure SetNome(const Value: string);
published
property id : integer read Fid write Setid;
property nome : string read Fnome write SetNome;
end;
implementation
procedure TClasse.SetNome(const Value: string);
begin
Fnome := Value;
Fnome := 'testing: '+Fnome;
end;
我用那个方法:
cl := TJSON.JsonToObject<TClasse>('{ "id" : 12, "nome" : "abc" }');
这意味着当方法“JsonToObject”被执行时,他将实例化我的类并将值设置为then,通过setter。属性“nome”应该具有值“testing:abc”,但它只有“abc”部分,来自 json。调试也不通过设置器。
我做错了吗?
【问题讨论】:
-
是的,你做错了什么...使用#$%&??? Delphi 内置的 JSON 库从一开始就被破坏了......长话短说,它使用字段而不是属性进行序列化,现在我不知道是否可以调整它以使用 setter。
-
在与 JSON 进行序列化时,您可能需要做的是使用定制的 POD 类型。
标签: rest oop delphi pascal setter