我正在嘗試將 Json 轉換為類物件,但這些值沒有出現在新的物件變數中。結果物件在字串中具有空白值,在整數中具有 0。提前致謝。
代碼:
type
Student =class
public
Name : string;
Age : Integer;
end;
procedure TForm2.Button5Click(Sender: TObject);
var
Student1, Student2: Student;
STR: string;
begin
Student1 := Student.Create;
Student2 := Student.Create;
try
Student1.Name := 'Sam';
Student1.Age := 24;
str := TJson.ObjectToJsonString(Student1);
Form2.outputMemo.Lines.Add(str);
Student2 := TJSON.JsonToObject<Student>(str);
Form2.outputMemo.Lines.Add(Student2.Name);
Form2.outputMemo.Lines.Add(Student2.Age.ToString);
finally
Student1.Free;
Student2.Free;
end;
//Form2.outputMemo.Lines.Text :=TJson.ObjectToJsonObject(Student1);
end;
輸出:
{"name":"Sam","age":24}
0
編輯:我剛看到這個,當我將名稱更改為 FName 和 FAge 時它起作用了……真是個巫術!誰能解釋一下這背后的邏輯? delphi-rest-json-jsontoobject-only-works-with-f-variables
uj5u.com熱心網友回復:
JSON 欄位到 Delphi 欄位的內部映射是以 F 為前綴并將以下字符更改為大寫。如果您想完全控制它,您可以使用屬性指定 JSON 名稱:
type
Student =class
public
[JSONName('name')]
Name : string;
[JSONName('age')]
Age : Integer;
end;
請注意,給出的 JSON 名稱區分大小寫。
您需要在使用中包含REST.Json.Types以便可以找到屬性宣告。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/450612.html
