Perl中的JSON有效数字参数

时间:2014-03-04 23:59:34

标签: json perl rpc bitcoin

my $client = new JSON::RPC::Client;

$client->ua->credentials(
 'localhost:8332', 'jsonrpc', 'user' => 'password'  
  );

my $uri = 'http://localhost:8332/';
my $obj = {
  method  => 'sendfrom',
  params  => [$account,$sendto,$btc,6], };

my $res = $client->call( $uri, $obj );

if ($res){
  if ($res->is_error) { print "Error : ", $res->error_message; }
  else { print Dumper($res->result); }
} else {
  print $client->status_line;
 }

考虑到上面的代码,如果声明它,则接受$ btc作为参数:

$btc = 0.01;

如果是,则不被接受:

$btc = 0.01;
$btc = sprintf('%.8f', $btc);

如果是:

也不被接受
&ReadParse(*data);
$btc =  $data{'amount'};

为什么会这样?我需要从html表单中获取$ btc值,并理想地格式化该值。

返回的错误是“500内部服务器错误”

2 个答案:

答案 0 :(得分:0)

该服务似乎很挑剔是否提供了字符串或数字。使用以下命令强制数字化:

$btc = 0+$x;

答案 1 :(得分:0)

这是非常不寻常的行为(Perl透明地在字符串,整数和浮点数之间进行转换)但您可以通过添加零来将值强制转换为数值浮点数。

因此请使用0.0 + sprintf('%.8f', $btc)0.0 + $data{'amount'}

顺便说一下,请不要用“&”号调用子程序。只需ReadParse(*data)即可。