将JSON数据的值传递给Free Pascal变量
问题描述:
我正试图将免费Pascal中的一个小程序放入JSON格式的Fixer.io当前汇率中,并使用它们进行简单的货币换算。 我已经得到以下,它将英镑兑换成波兰语złoty的汇率并将其打印到屏幕上。将JSON数据的值传递给Free Pascal变量
{$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'将数字显示为2位小数,因为它在'WriteLn'语句中。程序的这部分编译和运行没有任何问题。 问题是代码的第二部分,速率:= J.FindPath('rates.PLN')。AsFloat:2:2;'不是一种将变量传递给变量'rate'的有效方法。 – 2015-04-01 10:14:15
我只是很密集...你指的是'rate:= J.FindPath('rates.PLN')这行':2:2'。AsFloat:2:2;'take that出来解决问题谢谢你。 – 2015-04-02 08:43:20