2014-01-29 55 views
2

我想json編碼一個變量的值爲undefined,如javascript關鍵字undefined。我試圖谷歌這一點,但唯一的結果顯示是關於人們在他們的PHP腳本中得到錯誤,實際功能json_encode是未定義的。有沒有辦法做未定義?要編碼值NULL它只是null不帶引號。在php中使用"undefined"將其視爲字符串,當然undefined不起作用,因爲php認爲這是一個常數。是否有可能json_encode在PHP中未定義的值?

我想這在javascript:

JSON.stringify([undefined,null]); 

但它返回

[null,null] 

那麼,它甚至可以將價值undefined編碼?

的原因,我問的是,我使用的morris.js圖表​​庫,它比undefined值不同的方式處理null值當您的線路圖丟失的數據點,我希望他們可以爲undefined處理。我意識到我可以循環通過我的JSON對象並將所有null s轉換爲undefined s,但是我想知道是否甚至可以編碼undefined

一般來說,有幾種情況下undefined的處理方式可能與null的不同,所以這些都適用於所有這些情況。

謝謝!

回答

5

編號JSON不支持undefined的值。最近的親戚是nullfalse。根據the specification,有效的JSON值爲:字符串,數字,對象,數組,true,falsenull

此外,你將如何檢查它在對象中的存在?

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

my fiddle

如果你想爲未定義的屬性,json_encode之前將其刪除,例如在PHP中使用unset

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

您可以使用一個for...in循環。

+0

啊,我應該搜索規範,當我最初的搜索空了,這是一個很好的電話。感謝提示,儘管我認爲對於我的目的,我將不得不返回false,然後通過對象返回false並將其設置爲undefined;它的濫用未定義,因爲變量需要存在,只是沒有價值。 – chiliNUT

相關問題