1

我有一个系统将所有数据作为 JSON 字符串发送和接收,因此必须将我需要发送给它的所有数据格式化为 JSON 字符串。

我使用 PHP POST 调用从表单接收值,然后使用这些值创建 JSON 格式的字符串。问题在于 NULL 值以及真值和假值。当这些值包含在 POST 值的字符串中时,它只是将其留空,但 JSON 将 NULL 值格式化为文本 null。

请参见下面的示例:

<?php

$null_value = null;
$json_string = '{"uid":0123465,"name":"John Smith","nullValue":'.$null_value.'}';
echo $json_string;

//output
{"uid":0123465,"name":"John Smith","nullValue":} 

?>

但是,我需要的正确输出是:

$json_string = '{"uid":0123465,"name":"John Smith","nullValue":null}';
echo $json_string;

//output
{"uid":0123465,"name":"John Smith","nullValue":null} 

?>

我的问题是,我怎样才能让 PHP 空值正确显示为 JSON 空值,而不是让它为空?有没有转换它们的方法?

4

3 回答 3

2

不要手动创建您的 JSON 字符串。PHP有一个出色的功能http://php.net/manual/en/function.json-encode.php

于 2013-08-19T10:36:51.927 回答
0

不要手动将 JSON 拼凑在一起!

$data = array('uid' => '0123465', 'name' => 'John Smith', 'nullValue' => null);
$json = json_encode($data);
于 2013-08-19T10:37:35.663 回答
0

你可以做一些检查:

$null_value = null;
if(strlen($null_value) < 1)
    $null_value = 'null';//quote 'null' so php deal with this var as a string NOT as null value
$json_string = '{"uid":0123465,"name":"John Smith","nullValue":'.$null_value.'}';
echo $json_string;

null或者您可以在开头引用该值:

$null_value = 'null';
$json_string = '{"uid":0123465,"name":"John Smith","nullValue":'.$null_value.'}';
echo $json_string;

但首选的方法是在数组中收集值然后对其进行编码:

$null_value = null;
$json_string = array("uid"=>0123465,"name"=>"John Smith","nullValue"=>$null_value);
echo json_encode($json_string,JSON_FORCE_OBJECT);
于 2013-08-19T10:38:55.810 回答