2013-07-23 4 views
0

По умолчанию php json_encode() возвращает «[]» пустые скобки для пустого массива. Кроме того, можно изменить, чтобы вернуть «{}» скобки:Как вернуть null вместо пустого массива или пустой объект?

<?php 

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

Дело в том, нужно исправить веб-службы, чтобы вернуть NULL вместо пустых скобок, если массив, если пустой. Есть ли простой и стандартный способ?

+1

Простое условие 'if' для вас не кажется вам простым? –

ответ

1

Я понимаю, вы бы глубоко вложенные структуры, и вы хотите, чтобы заменить пустые листы с нулем.

Если это так, вы можете просто найти и заменить.

$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} 

Обратите внимание, что она заменяет пустые листы, но он не заменяет ветви, содержащие только нулевые листы.

0

вы не можете сделать это ?:

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

Веб-службы содержат довольно большую вложенную структуру данных, поэтому потребуется много ручных проверок. – Centurion

Смежные вопросы