2016-06-21 36 views
-3

任何方式从这个JSON检索url密钥?从restresponse JSON获取值

{ 
    "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来检索它。

+2

的http:// stackoverflow.com/a/37887564/62576会为您提供一些关于如何入门的建议。我们不是代码编写服务。 –

回答

4

从阅读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; 

或者,如果你正在使用英巴卡迪诺的,它可以为你检索和预解析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; 
+0

谢谢,我确实表达了自己的错误。我已经有了一个代码来做到这一点,但这不是我想要的。 –

+0

再次感谢您,但是 'obj.Free;' 在关闭应用程序时,会导致EInvalidPointer异常,并显示消息“无效的指针操作异常”。 –