python – 从Delphi XE中的网站API获取并显示json数据

我试图将我用
Python编写的一段代码重写为Delphi.

Python代码是:

url = "https://www.bitstamp.net/api/ticker/"
response = urllib.urlopen(url)
data = json.loads(response.read())
lastvalue = data['last']

这足以将名为“lastvalue”的变量分配给我从bitstamp的API获得的值.

我想用delphi做同样的事情(我使用的是delphi XE6).我试着在这里找到一些答案,我能够连接到bitstamp的网站并获得完整的字符串,通过这样做:

function GetURLAsString(const aurl:  string): string;
var
  lHTTP: TIdHTTP;
begin
  lHTTP := TIdHTTP.Create(nil);
  try
    lHTTP.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(lHTTP);
    Result := lHTTP.Get(aURL);
  finally
    lHTTP.Free;
  end;
end;

然后我用这个调用这个函数:

procedure TForm2.Button1Click(Sender: TObject);
var
mydata : string;

begin
mydata := GetURLAsString('https://www.bitstamp.net/api/ticker/');
Label1.Text := mydata;
end;

我被困在这里我搜索了很多,但我无法弄清楚如何分配给Label1.Text只是分配给“last”的值.

当我运行这个时,我得到{“high”:“629.40”,“last”:“622.00”,“timestamp”:“1401544416”,“bid”:“621.99”,“vwap”:“617.47”,“音量” :“15147.30475739”,“low”:“602.26”,“ask”:“622.00”}分配给Label1.Text.

我希望我能够解释这个问题.我在这一点上真的陷入了困境,我希望有人可以帮助我.

最佳答案 您可以使用DBXJSON单元来解析JSON响应.

试试这个样本

var
  LJsonObj   : TJSONObject;
  LJsonValue : TJSONValue;
begin
    mydata := GetURLAsString('https://www.bitstamp.net/api/ticker/');
    LJsonObj    := TJSONObject.ParseJSONValue(TEncoding.Default.GetBytes(mydata),0) as TJSONObject;
  try
     LJsonValue := LJsonObj.Get('last').JsonValue;
     Label1.Text:= LJsonValue.Value;
  finally
     LJsonObj.Free;
  end;
end;
点赞