0

我正在从我的 C# Windows 服务向 Amazon Web Services SNS 发送一条消息,以便可以从 iOS 应用程序接收它。

PublishRequest pubRequest = new PublishRequest();
pubRequest.TargetArn = arn;

pubRequest.Message = JsonConvert.SerializeObject(myMessage, Formatting.Indented);
pubRequest.MessageStructure = "json";

当我使用 JsonConvert.SerializeObject 时,这会产生一个消息字符串,如下所示:

{"default":"My Message.  ","APNS":{"aps":{"alert":{"title":"My Title","body":"MyBody data"},"data":{"someDataTolookAt":"blahblah"}}}}

但我需要像这样转义 APNS 部分中的引号:

{"default":"My Message.  ","APNS":{\"aps\":{\"alert\":{\"title\":\"My Title\","body\":\"MyBody data\"},\"data\":{\"someDataTolookAt\":\"blahblah\"}}}}

我怎样才能做到这一点?

4

1 回答 1

2

事实上,API 期望 APNS 序列化为字符串,而不是 json,您需要将其值转换为 json 字符串。为此特定属性创建自定义 JSON 转换器。

[JsonConverter(typeof(MyJsonConverter))]
someclass APNS {get;set;}

此转换器也将执行JsonConvert.SerializeObject(APNSobject)=> 因此您的 json 将为 apns 对象转义字符串。

于 2018-09-27T10:26:18.730 回答