TJSON.JsonToObject не проходят через сеттеры - PullRequest
3 голосов
/ 24 сентября 2019

У меня возникли проблемы при преобразовании строки 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"Он создаст экземпляр моего класса и установит значения затем, пройдя через сеттеры.Свойство «nome» должно иметь значение «testing: abc», но оно имеет только часть «abc» из json.Отладка также не проходит через сеттеры.

Я что-то не так делаю?

1 Ответ

0 голосов
/ 25 сентября 2019

Вы можете создать новый класс, например, TJSON_Respond, чтобы помочь сериализации

TJSON_Respond= class
  public
    [JSONName('id')] id: Integer;
    [JSONName('nome')] nome: String;
  end;

cl := TJson.JSONToObject<TJSON_Respond>('{ "id" : 12, "nome" : "abc" }');
...