JSON.stringify()工作不正常-第二个参数消失

JSON.stringify() not working correctly - Second parameter disappears

本文关键字:第二个 参数 消失 不正常 工作 stringify JSON      更新时间:2023-09-26

我有以下对象:

var message = {
    default: 'Default',
    GCM: {
        data: {
            title: titleMessage,
            text: textMessage
        }
    }
};

当我意识到:

message.GCM = JSON.stringify(message.GCM);

变量消息。GCM得到以下值:

{"data":{"title":"titleMessageValue"}} 

代替:

{"data":{"title":"titleMessageValue", "text":"textMessageValue"}} 

为什么它会忽略我的数据对象中的第二个变量?如何在不丢失任何变量的情况下进行字符串化?

textMessage很可能是undefined

var msg = {
  title: 'titleMessage',
  text: 'textMessage'
};
JSON.stringify(msg); // Both properties are there
msg.text = undefined;
JSON.stringify(msg); // `text` is missing

如果在转换过程中遇到未定义、函数或符号,则会将其省略(当在对象中找到时)或删截为null(当在数组中发现时)。

来源:MDN

这可以正常工作:

var titleMessage = 'This is my title';
var textMessage = 'This is my message';
var message = {
    default: 'Default',
    GCM: {
        data: {
            title: titleMessage,
            text: textMessage
        }
    }
};
message.GCM = JSON.stringify(message.GCM);

但请注意:

  • 如果CCD_ 3,则它不会出现在字符串结果中
  • 如果textMessage不存在,它将抛出一个错误

使JSON如下:

var message = {
    default: 'Default',
    GCM: {
         data: {
         title: 'titleMessage',
         text: 'textMessage'
       } 
    }
 };

或者定义两个变量titleMessage和textMessage