2016-01-08 2 views
2

я следующий объект:JSON.stringify() не работает правильно - Второй параметр исчезает

var message = { 

    default: 'Default', 

    GCM: { 

     data: { 
      title: titleMessage, 
      text: textMessage 
     } 
    } 
}; 

Когда я понимаю:

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

Переменная message.GCM получает следующее значение:

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

Вместо:

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

Почему это игнорирует вторую переменную из моего объекта данных? Как я могу проиграть без каких-либо переменных?

+0

что произойдет, если Отпрака неопределен –

+0

'' undefined' и function' не являются допустимыми значениями для формат ** JSON **. См. ** http: //json.org/** – jherax

ответ

6

textMessage, вероятно, undefined.

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

Если не определено, функция или символ встречается во время преобразования он либо опущен (когда он находится в объекте) или цензуру на нуль (когда он находится в массиве).

Источник: MDN

+0

Спасибо Майку. В середине огромного количества кода я забыл обновить прохождение параметра в куске кода –

+0

@ ViníciusMendesdeSouza Glad Я мог бы помочь. –

0

Это работает нормально:

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); 

Но обратите внимание, что:

  • если var textMessage = undefined; он не будет появляться в stringify результат.
  • если textMessage не существует, это приведет к ошибке.
0

Сделать JSON, как следующее:

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

Или определить две переменные titleMessage и Отпрака

Смежные вопросы