2014-01-29 2 views
2

Я пытаюсь json закодировать переменную, чтобы иметь значение undefined, как в ключевом слове javascript undefined. Я попытался это сделать Google, но единственные результаты, которые появляются, - это люди, получающие ошибки в своем скрипте php, что фактическая функция json_encode не определена. Есть ли способ сделать undefined? Для кодирования значения NULL это просто null без кавычек. Использование "undefined" в php рассматривает его как строку, и, конечно, undefined не работает, поскольку php думает, что это константа.Возможно ли json_encode значение undefined в php?

Я попробовал это в JavaScript:

JSON.stringify([undefined,null]); 

но он вернулся

[null,null] 

Так что даже можно закодировать значение undefined?

Причина Я спрашиваю, что я использую morris.js графиков библиотеки, и она обрабатывает null значения иначе, чем undefined значения, когда ваша линия диаграммы отсутствует точек данных, и я хочу, чтобы они были обработаны, как undefined. Я понимаю, что мог бы пройти через мой объект JSON и преобразовать все null s в undefined s, но я хочу знать, можно ли даже кодировать undefined.

В целом существует несколько ситуаций, когда undefined может обрабатываться иначе, чем null, поэтому это применимо ко всем из них.

Спасибо!

ответ

5

Номер JSON не поддерживает значение undefined. Ближайшими родственниками будут null или false. Согласно the specification, действительными значениями JSON являются: строка, число, объект, массив, true, false и null.

Кроме того, как бы вы отметили его существование в объекте?

var a = {"key1":undefined,"key2":"value2"}; 
var b = {"key2":"value2"}; 
if(typeof(a.key1) == typeof(b.key1)){ 
    alert('absent in both!'); 
} 

См my fiddle.

Если вы хотите, свойство быть неопределенным, удалить его, например, в PHP использование unset перед тем json_encode:

$a = array('key1' => null, 'key2' => 'value2'); 
unset($a['key1']); 
json_encode($a); // {"key2":"value2"} 

Вы можете использовать for...in петлю.

+0

А, мне следовало бы искать спецификацию, когда мой первоначальный поиск оказался пустым, это хороший звонок. Спасибо за советы, хотя я думаю, что для своей цели мне придется возвращать false, затем каждый через объект и устанавливать фальши на неопределенный; его вид неправильного использования неопределенного, поскольку переменная должна присутствовать, просто без ценности. – chiliNUT

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