GCM 消息的正确 JSON 格式
Posted
技术标签:
【中文标题】GCM 消息的正确 JSON 格式【英文标题】:Correct JSON format for GCM message 【发布时间】:2013-09-02 05:06:24 【问题描述】:这是我的 JSON
var postData =
" \"registration_ids\": [ \"" + pushNotificationState.RegistrationId + "\" ], "+
"\"data\": \""+ pushNotificationState.NotificationData.NotificationData + "\"";
注册 ID 和通知数据是变量。我从 GCM 服务器收到 400 响应,说 JSON 格式不正确。谁能挑出我哪里出错了?
干杯
【问题讨论】:
【参考方案1】:您有一个打开的,但有两个关闭的
。
var postData = " \"registration_ids\": [ \"" + pushNotificationState.RegistrationId + "\" ], " + "\"data\": \""+ pushNotificationState.NotificationData.NotificationData + "\"";
【讨论】:
为回复和帮助欢呼,但服务器仍然保持错误的 json 格式。 我认为你应该添加一个断点来查看 postData 的确切值,并确认格式。检查它是否是格式良好的 JSON 字符串的简单方法是由一些 JSON 查看器查看,例如 jsonviewer.stack.hu 您可以将调试值发送到我的收件箱,以便我为您检查格式 我得到registration_ids不是一个数组。这很奇怪,因为在示例格式中它看起来不像一个数组。 它是在一个简单的字符串数组之后。我的错。【参考方案2】:使用一些Json 工具,而不是手动创建字符串。否则,如果某些字符串变量包含、
、
"
等,您将遇到问题。
var json = JsonConvert.DeserializeObject(
new
registration_ids = new[] pushNotificationState.RegistrationId ,
data = pushNotificationState.NotificationData.NotificationData
);
【讨论】:
【参考方案3】: var postData = " \"registration_ids\": [ \"" + pushNotificationState.RegistrationId + "\" ], "+
"\"data\": \""+ pushNotificationState.NotificationData.NotificationData + "\"";
尝试用那个替换它。
【讨论】:
【参考方案4】:您可以使用以下代码创建请求对象,然后转换为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);
希望这会有所帮助。
【讨论】:
PayLoad 类的用途是什么?以上是关于GCM 消息的正确 JSON 格式的主要内容,如果未能解决你的问题,请参考以下文章
消息传递/不正确-gcm-sender-id firebase PWA