解析和转换 JSON

Parsing and converting JSON

我对 TJSONObject.ParseJSONValueTJSONObject.toString

有疑问

以下代码不会在 Memo2 中显示 Memo1 中的 JSON,只有一个空的“{}”:

  A:=tJSONObject.Create;
  A.ParseJSONValue(Memo1.Lines.Text);
  Memo2.Lines.Text:=A.ToString;

有什么问题吗?

ParseJSONValue 是一个函数,所以它需要 A:=A.ParseJSONValue...

多么愚蠢....

ParseJSONValue()TJSONObjectclass 函数。它不会 修改 它被调用的 TJSONObject,正如您所期望的那样。它 returns 一个新的 TJSONValue,它将指向一个 TJSONObject 如果 JSON 数据代表一个 JSON目的。您忽略了 return 值(因此泄漏了它,因为您需要调用 Free 来完成使用)。

您需要将代码更改为更像这样的内容:

var A: TJSONValue;

A := TJSONObject.ParseJSONValue(Memo1.Text);
if A <> nil then
try
  Memo2.Text := A.ToString;
finally
  A.Free;
end;