【问题标题】:GET Value from restresponse Json从响应 Json 中获取值
【发布时间】:2016-06-21 17:48:32
【问题描述】:

有什么方法可以从此 JSON 中检索 url 密钥?

{
  "data": {
    "is_silhouette": false,
    "url": "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-xpf1/v/t1.0-1/p200x200/13178742_10205047662871072_6233795154346712405_n.jpg?oh=194b0150c2325660390490779bf9b942&oe=57C22031&__gda__=1472746057_dc9b0557adc8408840fafb73ed325ef8"
  }
}

Facebook's Graph API提供。我正在使用 Delphi 10.0 Seattle 的 Rest Library 来检索它。

【问题讨论】:

标签: json delphi facebook-graph-api delphi-10-seattle


【解决方案1】:

首先阅读 Embarcadero 的 JSON documentation。您可以使用System.JSON 单元中的类,例如:

uses
  ..., System.JSON;

var
  json: string;
  obj, data: TJSONObject;
  url: string;
begin
  json := ...; // JSON data retrieved from REST server
  obj := TJSONObject.ParseJSONValue(json) as TJSONObject;
  try
    data := obj.Values['data'] as TJSONObject;
    url := data.Values['url'].Value;
  finally
    obj.Free;
  end;
end;

或者,如果您使用 Embarcadero 的 REST client library,它可以为您检索和预解析 JSON:

var
  obj, data: TJSONObject;
  url: string;
begin
  RESTRequest1.Execute;
  obj := RESTResponse1.JSONValue as TJSONObject;
  data := obj.Values['data'] as TJSONObject;
  url := data.Values['url'].Value;
end;

【讨论】:

  • 谢谢,我确实表达错了。我已经有代码可以做到这一点,但这不是我想要的方式。
  • 再次感谢您,但obj.Free; 在关闭应用程序时会导致 EInvalidPointer 异常,并显示“Invalid Pointer Operation Exception”消息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-28
  • 2021-11-26
  • 1970-01-01
相关资源
最近更新 更多