如何返回null而不是空数组或空对象?

时间:2013-07-23 14:03:19

标签: php json

默认情况下,php json_encode()为空数组返回“[]”空括号。此外,可以更改为返回“{}”括号:

<?php

  $result = array();
  $json = json_encode($result, JSON_FORCE_OBJECT);
  print($json);

如果数组为空,则需要修复Web服务以返回null而不是空括号。有没有简单而标准的方法?

2 个答案:

答案 0 :(得分:1)

我知道你会有深层嵌套结构,并且你想用null替换空叶。

如果是这种情况,您可以简单地找到并替换。

$result = array("test" => array("Foo"=> new stdClass()), "testy" => array());
$json = json_encode($result);
$strippedJson = str_replace(array('[]', '{}'), 'null', $json);

会给这个json:

{"test":{"Foo":null},"testy":null}

请注意,它会替换空叶,但它不会替换仅包含空叶的分支。

答案 1 :(得分:0)

你不能这样做吗?:

print ($json == '[]') ? null : $json;