如何在Delphi中使用REST.Json将JSON转换为列表?

时间:2018-02-08 12:40:13

标签: json list delphi delphi-10.2-tokyo

我有一个像这样的JSON文件:

[{"id":1,"name":"JOHN"}, {"id":2,"name":"PETER"}]

我想将此列表存储到ClientDataSet或类似的东西中。如何使用REST.Json单元在Delphi 10.2 Tokyo中执行此操作?

2 个答案:

答案 0 :(得分:0)

使用Rest.json,我不知道但是如果你想将[{"id":1,"name":"JOHN"}, {"id":2,"name":"PETER"}]转换为Tstringlist,你可以使用alcinoe

在一行中完成
Procedure ALJSONToTStrings(const AJsonStr: AnsiString;
                           const aFormatSettings: TALFormatSettings;
                           const aPath: AnsiString;
                           const aLst: TALStrings;
                           Const aNullStr: AnsiString = 'null';
                           Const aTrueStr: AnsiString = 'true';
                           Const aFalseStr: AnsiString = 'false'); overload;

Procedure ALJSONToTStringsU(const AJsonStr: String;
                            const aFormatSettings: TALformatSettingsU;
                            const aPath: String;
                            const aLst: TALStringsU;
                            Const aNullStr: String = 'null';
                            Const aTrueStr: String = 'true';
                            Const aFalseStr: String = 'false'); overload;

答案 1 :(得分:0)

Delphi 10.2 Tokyo的REST客户端库包含一个 TRESTResponseDataSetAdapter 类,用于将JSON解析为数据集。

查看10.2附带的RESTDemos示例项目。有一个在 Fetch to DataSet 选项卡上使用适配器的示例。

按钮点击事件中的代码是:

  ResetRESTComponentsToDefaults;

  RESTResponseDataSetAdapter.Response:= RESTResponse;
  RESTResponseDataSetAdapter.Dataset:= ClientDataSet;

  RESTClient.BaseURL := edt_DataSet_BaseURL.Text;
  RESTRequest.Resource := edt_DataSet_ResourceURI.Text;
  RESTRequest.Execute;