2017-02-15 23 views
-1

我一直在寻找很多论坛和问题,但无法找到任何找到这个任何回答。生成一个含有JSON浮点数以下0

简单的话是有可能创造在PHP这样的JSON响应:

{ 
    "Balance": 1.200 
} 

1.2000不是一个字符串。

+1

为什么需要0的? –

+0

我正在整合一个API,他们希望我们的回应是这样的。 – Kanav

+0

你可以但最后00会丢失,意味着你会得到“平衡​​”:1.2 –

回答

2

如果the result they want不是一千零二一百个as suggested通过bub,那么你就不会abble给他们不必要的尾随零的整数,它没有任何意义了整数有他们。

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

0

恐怕你将需要调整你自己的JSON字符串。例如为:

  1. 从数1.2生成JSON字符串之前转换余额的值串"@@[email protected]@"
  2. 生成JSON字符串
  3. 使用PHP的字符串与[whatever_number_with_trailing_zeroes]
0

当然可以更换的"@@[whatever_number]@@"所有出现,一切是可能的,但你的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"} 

当然,请记住,这将删除报价FR om无论您的JSON水平如何,所有Balance值。

更大的问题是谁,心里明白过来,将要求您无效JSON发给他们的API?

+1

哈哈。我爱你的最后一行。但是,有些公司并不知道这一点。 – Kanav

+1

有人会认为,如果他们有足够能胜任API的人员,这些人应该知道什么是有效的JSON,哪些不是,特别是因为他们首先选择了格式。 噢,上面的代码应该可以解决你的问题,但随时可以用自己的API来捣乱自己的鼻子;) – zwer