更正GCM消息的JSON格式

时间:2013-09-02 05:06:24

标签: c# .net json push-notification google-cloud-messaging

继承我的JSON

   var postData = 
                     "{ \"registration_ids\": [ \"" + pushNotificationState.RegistrationId + "\" ], "+
                         "\"data\": {\""+ pushNotificationState.NotificationData.NotificationData + "\"}";

注册ID和通知数据是变量。我从GCM服务器得到400响应,说JSON格式不正确。任何人都可以选择我出错的地方吗?

干杯

4 个答案:

答案 0 :(得分:2)

您有一个开放{但有两个关闭}

var postData = "{ \"registration_ids\": [ \"" + pushNotificationState.RegistrationId + "\" ], " + "\"data\": \""+ pushNotificationState.NotificationData.NotificationData + "\"}";

答案 1 :(得分:1)

使用一些Json工具,而不是手动创建字符串。否则,如果某些字符串变量包含{}"等,则会出现问题。

var json = JsonConvert.DeserializeObject(
            new {
                registration_ids = new[] { pushNotificationState.RegistrationId },
                data = pushNotificationState.NotificationData.NotificationData
            });

答案 2 :(得分:0)

   var postData =      "{ \"registration_ids\": [ \"" + pushNotificationState.RegistrationId + "\" ]}, "+
                             "\"data\": {\""+ pushNotificationState.NotificationData.NotificationData + "\"}";

尝试用它替换它。

答案 3 :(得分:0)

您可以使用以下代码创建请求对象,然后转换为json。

public  class GCMRequest
{
    public GCMRequest()
    {
        data = new PayLoad();
    }
    public List<string> registration_ids;
    public PayLoad data;
}
public class PayLoad
{
    public string key;
}

您可以按以下方式创建请求

GCMRequest req = new GCMRequest();
List<string> tokens = new List<string>();
// .. fill the tokens to the 'tokens' list
req.registration_ids = tokens;
req.data.key = "Hi, how are you"; // message you want to send
string json = new JavaScriptSerializer().Serialize(req);

希望这会有所帮助。