2013-10-28 73 views
0

發行
我想打電話給JSON.stringify走過時,我想在字符串中包含的字段。我想包括的一個領域是一個對象。 JSON.stringify方法不包含對象的任何字段,因爲我會預期的。Json.stringify特定字段,其中字段一個是對象

這是我的大對象的一小部分;

var person = { 
     name: "John Doe", 
     Address: { Line1: "100 north main", City: "Des Moines" }, 
     Phone: "555-5555" 
    } 

這裏是字符串化方法調用

console.log(JSON.stringify(person,["name","Address"])); 

這是效果

"{\"name\":\"John Doe\",\"Address\":{}}" 

這裏是一個js斌我創建 - http://jsbin.com/UYOVufa/1/edit?html,console

我總是可以將人物串起來。地址並將它與另一個字符串結合起來,但感覺像是過度殺傷。

我錯過了什麼?

謝謝,

回答

3

的JSON.stringify接受代用品(即陣列...)作爲參數。 注意的替代品文檔:

如果返回其他任何對象,該對象是遞歸的字符串化 成JSON字符串,號召每個屬性的替代品的功能, 除非對象是一個函數,在這種情況下,沒有被添加到 JSON字符串中。

(來源:https://developer.mozilla.org/en-US/docs/Using_native_JSON#The_replacer_parameter

這將工作:

JSON.stringify(person,["name","Address", "Line1", "City"]) 
1

它會檢查每個鍵字段列表,即使它是在嵌套對象的關鍵:

JSON.stringify(person, ['name', 'Address', 'Line1', 'City']) 

=> "{"name":"John Doe","Address":{"Line1":"100 north main","City":"Des Moines"}}" 
2

如上所述,JSON.stringfy進行遞歸替換,只需要將鍵名稱放入即可。但是,也有足夠的強大功能來輕鬆製作自己的json字符串。

我的建議,以達到你想要的解決方案是

JSON.stringify(person, function(k,v){ 
    if(k!=="Phone"){ 
     return v; 
    } 
}); 

功能替代默認的替代品,並允許任何你想要的,你的輸出,而不影響原有的JSON對象。想象一下可能性,大大增加對輸出響應的控制。

+0

有趣的是,感謝您的代碼。 – RDotLee

相關問題