将JSON数据的值传递给自由Pascal变量
我正试图用免费的Pascal编写一个小程序,以JSON格式获取当前汇率,并使用它们进行简单的货币转换。 我得到了如下信息,它下载了从英镑到波兰兹罗提的汇率,并将其打印到屏幕上将JSON数据的值传递给自由Pascal变量,json,lazarus,freepascal,delphi,Json,Lazarus,Freepascal,Delphi,我正试图用免费的Pascal编写一个小程序,以JSON格式获取当前汇率,并使用它们进行简单的货币转换。 我得到了如下信息,它下载了从英镑到波兰兹罗提的汇率,并将其打印到屏幕上 {$mode objfpc}{$H+} uses fphttpclient, fpjson, jsonparser; Var S : String; J: TJSONData; initialAmount, endAmount, rate: real; begin With TFPHttpClient
{$mode objfpc}{$H+}
uses fphttpclient, fpjson, jsonparser;
Var
S : String;
J: TJSONData;
initialAmount, endAmount, rate: real;
begin
With TFPHttpClient.Create(Nil) do
try
S:=Get('http://api.fixer.io/latest?base=GBP');
finally
Free;
end;
J:= GetJSON(S);
writeln ('Current exchange rate of GBP to Polish złoty: ',J.FindPath('rates.PLN').AsFloat:2:2);
end.
我正在努力做的是将汇率的值传递给一个变量,我可以用它进行货币转换
大致如下:
rate := J.FindPath('rates.PLN').AsFloat:2:2;
writeln;
write ('Enter initial amount in GBP £');
readln (initialAmount);
endAmount := initialAmount * rate;
writeln (endAmount);
有什么建议吗?除了两个问题外,您建议的代码看起来不错
:2:2
。IIRC,该符号是为WriteLn
语句保留的啊,我修改了程序的最后一行,以显示最终金额,而不是利率。
:2:2
在WriteLn
语句中正确显示小数点后2位的数字。程序的这一部分编译和运行时没有任何问题。问题是代码的第二部分,rate:=J.FindPath('rates.PLN')。AsFloat:2:2
不是将金额传递给变量rate
的有效方法。我只是在。。。您指的是:2:2
行中的rate:=J.FindPath('rates.PLN')。AsFloat:2代码>去掉它可以解决问题谢谢。