Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法分析SNS-JSON消息正文_C#_.net_Amazon Web Services_Asp.net Core_Amazon Sns - Fatal编程技术网

C# 无法分析SNS-JSON消息正文

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

我正试图通过Amazon SNS向移动设备发送远程通知。我得到了一个数据库,我存储了JSON(有效负载),它需要提供给SNS的PublishRequest。我在代码中序列化json并将其传递给请求

问题是SNS失败并出现错误:“消息结构-JSON消息体解析失败”

作为一项要求,服务(负责与SNS通信并发送通知)必须从DB(MySQL)检索json

我错过了什么

数据库是MySQL,服务是用.Net内核编写的

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。这对我很有效。谢谢。。。