2014-12-04 36 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