2014-12-04 72 views
2

本主題針對PHP和Rails在本站上提及,但我沒有看到任何標準JavaScript。用JSON中的引號替換null

如果我JSON對象有一對看起來這ID的空值:空,但我需要它看起來像這樣ID:「」

由於JSON不支持單引號我不確定如何做到這一點。

當前結果

{"id":"e6168d55-1974-e411-80e0-005056971214","label":"List","parentId":null} 

所需的結果

{"id":"e6168d55-1974-e411-80e0-005056971214","label":"List","parentId":""} 
+0

你可以發佈一些示例json,即'id:null'適合整體json對象嗎?而這個json是一個字符串還是一個Javascript對象? – Rhumborl 2014-12-04 20:26:28

+0

循環遍歷對象,並在轉換爲JSON之前用空字符串*替換null的所有實例。 – JCOC611 2014-12-04 20:26:42

+0

你是如何構建這個JSON的?你是否在JavaScript對象上調用了'JSON.stringify'(並且該對象有一個你希望在JSON輸出中表示爲空字符串的空值)?或者你想要做一個JSON到JSON的轉換? – apsillers 2014-12-04 20:30:33

回答

0

不知道爲什麼你提的單引號,但在JSON它會從未這個樣子的:

id:null 

也許你的意思是?

{ 
    "id": null 
} 

無論如何,如果你想編碼""而不是null,你提供一個空字符串,因爲""簡直是如何編碼一個空字符串。因此請通過您的null s並用空字符串替換它們。

0

我不相信有一種快速簡單的方法來將NULL映射到「」。如果您沒有使用非常深的JSON結構,那麼您可以遍歷結構並將其從NULL更改爲「」。

0

這解決了我的問題

myJSON = myJSON.replace(/null/i, "\"\""); 
+0

大聲笑,你發佈了同樣的答案,因爲我正在打字:) – paulscode 2014-12-04 20:36:09

+3

嘗試用'var myJSON = JSON.stringify([「這會使答案無效]])'。 – Oriol 2014-12-04 20:46:56

+0

@Oriol,優點! – paulscode 2014-12-04 21:04:42

6

JSON.stringify接受replacer callback,讓您與其他值替換值。替換器回調會針對輸入中處理的每個鍵值對運行,並用它的返回值替換提供的值。

只要有你的替代品回調尋找任何null值,並用空字符串替換它們:

var myObj = { 
       "id":"e6168d55-1974-e411-80e0-005056971214", 
       "label":"List", 
       "parentId":null 
      }; 

JSON.stringify(myObj, function(key, value) { 
    // if value is null, return "" as a replacement 
    if(value === null) { 
     return ""; 
    } 

    // otherwise, leave the value unchanged 
    return value; 
}); 

如果你沒有一個對象,但只有JSON作爲輸入,你可以建立一個對象使用var myObj = JSON.parse(jsonInput);

+0

這太神奇了!快速修復,你可以在「鍵」和「值」之間添加一個逗號,以便代碼片段運行嗎?我會的,但是SO想要在編輯中更多的改變單個字符。 – danjuggler 2017-01-27 20:18:06

+0

@danjuggler謝謝,修正。 – apsillers 2017-01-28 13:37:49