Как поместить переменную в JSON

На самом деле я работаю с PushSharp. Я хотел бы отправить уведомление, но мне нужно поместить переменную в этот JSON вместо жестко запрограммированного текста (пример ниже).

var msg = "TEST MESSAGE";
    push.QueueNotification(new GcmNotification().ForDeviceRegistrationId(registrationId)
                             .WithJson("{\"alert\":\"HERE MESSAGE\",\"badge\":7,\"sound\":\"sound.caf\"}"));

Является ли это возможным? Как я могу поместить переменную msg в

Я пробовал что-то вроде этого:

push.QueueNotification(new GcmNotification().ForDeviceRegistrationId(registrationId)
                         .WithJson("{\"alert\":\"{0}\",\"badge\":7,\"sound\":\"sound.caf\"}",msg));

но он говорит: перегрузка для метода 'WithJson' не принимает 3 аргумента.

Любая идея, как решить эту проблему?


person lukso    schedule 18.04.2013    source источник
comment
Я никогда не использовал PushSharp, но должны быть лучшие способы обработки json, кроме ручного формирования его из строки. Предположим, ваше сообщение содержит ". Что случилось бы?   -  person I4V    schedule 18.04.2013
comment
Я попробовал это. Теперь я получаю эту ошибку. System.FormatException: входная строка имеет неверный формат.   -  person lukso    schedule 18.04.2013


Ответы (1)


Если вы хотите добавить свое сообщение в JSON, вы можете сделать это:

var msg = "my message"; // this would be set somewhere else in the code
var jsonObject = {
    "alert" : "{0}",
    "badge" : "7",
    "sound" : "sound.caf",
    "msg" : msg
};

// convert the object into a string
var jsonString = JSON.stringify(jsonObject);

push.QueueNotification(new GcmNotification().ForDeviceRegistrationId(registrationId)
        .WithJson(jsonString));

Изменить: я изменил код, чтобы вам не приходилось манипулировать строкой. Вместо этого теперь вы можете манипулировать jsonObject. Затем JSON.stringify преобразует его в строку.

person Friederike    schedule 18.04.2013
comment
Спасибо. :) Не могли бы вы отметить это как ответ, если это решило вашу проблему? Это будет здорово. :D - person Friederike; 18.04.2013
comment
К сожалению, ваш отредактированный код выше не работает. Ошибка CS1525: непредвиденный символ :', expecting или `}'. Предыдущая версия работает идеально. - person lukso; 19.04.2013
comment
Не могу воспроизвести ошибку. У меня это работает: jsfiddle.net/74eBt Что у вас есть в вашей переменной msg? - person Friederike; 19.04.2013