C# 无法分析SNS-JSON消息正文
我正试图通过Amazon SNS向移动设备发送远程通知。我得到了一个数据库,我存储了JSON(有效负载),它需要提供给SNS的PublishRequest。我在代码中序列化json并将其传递给请求 问题是SNS失败并出现错误:“消息结构-JSON消息体解析失败” 作为一项要求,服务(负责与SNS通信并发送通知)必须从DB(MySQL)检索json 我错过了什么 数据库是MySQL,服务是用.Net内核编写的C# 无法分析SNS-JSON消息正文,c#,.net,amazon-web-services,asp.net-core,amazon-sns,C#,.net,Amazon Web Services,Asp.net Core,Amazon Sns,我正试图通过Amazon SNS向移动设备发送远程通知。我得到了一个数据库,我存储了JSON(有效负载),它需要提供给SNS的PublishRequest。我在代码中序列化json并将其传递给请求 问题是SNS失败并出现错误:“消息结构-JSON消息体解析失败” 作为一项要求,服务(负责与SNS通信并发送通知)必须从DB(MySQL)检索json 我错过了什么 数据库是MySQL,服务是用.Net内核编写的 string messageFromDb = JsonConvert.Serialize
string messageFromDb = JsonConvert.SerializeObject(input.Payload);
var request = new PublishRequest
{
TargetArn = endpoint.EndpointArn,
MessageStructure = "json",
Message = messageFromDb
};
PublishResponse publishResponse = await _client.PublishAsync(request);
来自数据库的JSON:
{"APNS": {"aps": {"alert": "Check out the new!", "sound": "default"}, "category": {"type": "sports"}}}
我也尝试过这个,但没有任何运气:
{"default": "something", "APNS": {"aps": {"alert": "Check out the new games!", "sound": "default"}, "game": {"type": "Xbox"}}}
最后我想起来了,也许这个答案会对某人有所帮助。数据库中的JSON应该是
{"aps": {"alert": "Check out the new!", "sound": "default"}, "category": {"type": "sports"}}
.Net代码应为:
AWSRoot obj = new AWSRoot(input.Payload);
var request = new PublishRequest
{
TargetArn = endpoint.EndpointArn,
MessageStructure = "json",
Message = JsonConvert.SerializeObject(obj)
};
PublishResponse publishResponse = await _client.PublishAsync(request);
AWSRoot是我们为SNS创建的根对象
public class AWSRoot
{
public string APNS { get; set; }
public AWSRoot(string payload)
{
APNS = payload;
}
}
你们能分享一下JSON的例子吗?你们有并没有试着调试,看看你们得到了什么样的负载?还有,为什么要做两次
SerializeObject
?第一个是从数据库获取,第二个是填充消息?另外,您是否检查了MessageStructure
是否为json的要求:Message
必须是语法有效的json对象;并且至少包含一个顶级JSON键“default”和一个字符串值。@Caldazar考虑到serializedObject的2倍是一个打字错误,所以我编辑了这篇文章。我正在处理其余的评论。我不认为MessageStructure=“json”
意味着你认为它的作用。您的正确操作可能是删除这行。啊哈,好吧,看起来您试图做一些与我假设的不同的事情,因此我为错误的建议道歉,并为看起来是可靠的答案+1。这对我很有效。谢谢。。。