生成包含0之后的浮点数的json

时间:2017-02-15 13:41:20

标签: php json string laravel api

我一直在搜索很多论坛和问题,但无法找到任何答案。

简单来说就是可以在php中创建这样的json响应:

{
    "Balance": 1.200
}

1.2000不是字符串。

3 个答案:

答案 0 :(得分:2)

如果the result they want不是一千零二百{/ em> as suggested bub,那么你将无法向他们发送一个带有不必要尾随的整数零,对于一个整数来说它没有任何意义。

如果有可能,你会如何在整数值中存储零的数量? AFAIK是不可能的。

答案 1 :(得分:0)

我担心你需要自己调整JSON字符串。 E.g:

  1. 在生成JSON字符串之前,将Balance的值从数字1.2转换为字符串"@@1.2@@"
  2. 生成JSON字符串
  3. 使用PHP在字符串中替换"@@[whatever_number]@@"所有出现的[whatever_number_with_trailing_zeroes]

答案 2 :(得分:0)

当然,所有都是可能的,但你的JSON无效(尽管大多数JSON解析器都不会抱怨) - 只需将'填充'余额存储为字符串,然后进行后处理它删除了它的引号:

// Make sure your data contains Balance in the format you need, as string
$your_data = array('Balance' => '1.200', 'foo' => 'bar');

// Encode your data the regular way
$json = json_encode($your_data);

echo "Before: $json"; // Before: {"Balance":"1.200","foo":"bar"}

// remove quotes around balance instances in your JSON
$fixed_json = preg_replace('/Balance":(\s*)"(.*?)"/', 'Balance":$2$1', $json);

echo "After: $fixed_json"; // After: {"Balance":1.200,"foo":"bar"}

当然,请记住,无论级别如何,这都会删除JSON中所有Balance值的引号。

更大的问题是,在他的正确思想中,谁会要求您向其API发送无效的JSON?