如何在Delphi 10.3中解析此json数据?

时间:2020-09-03 17:23:04

标签: json delphi

我是Delphi的新手,现在我学习了。 我有这种和平的代码。效果很好。

procedure TForm2.Button1Click(Sender: TObject);
var
  jValue : TJSONValue;
  JsonArray: TJSONArray;
begin

  RESTRequest1.Execute;
  jValue := RESTResponse1.JSONValue;

  // Ist this the right way? --> JsonArray := TJSonObject.ParseJSONValue(jValue.ToString) as TJSONArray;

  MemoContent.Lines.Add('Zitat des Tages:');
  MemoContent.Lines.Add(jValue.ToString);

end;

输出为以下JSON字符串:

Zitat des Tages:\n
{"951":{"zitat":"\nWo ein Wille ist, ist auch ein Holzweg.\n\n","autor":"André Brie"},"timestamp":"2020 09 03 19:21:36"}

现在,我想解析JSON对象,以便将备忘录的zitat写成备忘录。但是我不知道那样做。我已经读了很多东西,但是我不知道将我的字符串放入数组然后解析为元素。

有没有小费或一些帮助?

感谢帮助。

1 个答案:

答案 0 :(得分:2)

此代码可能会完成您需要的解析:

    uses System.JSON;
    
    procedure TForm1.Button1Click(Sender: TObject);
        JSonData   : String;
        JSonObject : TJSonObject;
        JSonValue  : TJSonValue;
        Zitat      : String;
    begin
        JSonData   := '{"951":{"zitat":"\nWo ein Wille ist, ist auch ein Holzweg.\n\n","autor":"André Brie"},"timestamp":"2020 09 03 19:21:36"}';
        JSonObject := TJSonObject.ParseJSONValue(JSonData) as TJSonObject;
        try
            JSonValue := JSonObject.Get('951').JSONValue;
            Zitat     := JSonValue.GetValue<string>('zitat');
        finally
            JSonObject.Free;
        end;
        ShowMessage(Zitat);
    end;

您应该添加更多测试以处理JSON数据格式错误或不包含所需数据的情况。