C# - JSON SNS 序列化

C# - JSON serialization for SNS

我想序列化要通过 AWS SNS 模块发送的消息。

public async Task<string> jsonConvert(string message)  
{
    datamessage datamessage = new datamessage { message = message };
    gcmMessage lGcm = new gcmMessage { data = datamessage };
    MessageDto messageDto = new MessageDto { GCM = JsonConvert.SerializeObject(lGcm) };
    var msg = JsonConvert.SerializeObject(messageDto);
    return msg;
}

我正在使用此代码,但 return 值为

{"GCM":"{\"data\":{\"message\":\"TestMsg\"}}"}

但我想要它

{"default": "TestMsg", "GCM": "{ \"data\": { \"message\": \"TestMsg\" } }"}

如有任何帮助,我们将不胜感激。

您要创建的 Json 的结构应该如下所示:

类:

public class Data
{
    [JsonProperty("message")]
    public string Message { get; set; }
}

public class GCM
{
    [JsonProperty("data")]
    public Data Data { get; set; }
}

public class RootObject
{
    [JsonProperty("default")]
    public string Default { get; set; }

    [JsonProperty("GCM")]
    public GCM GCM { get; set; }
}

创建消息:

RootObject rootObject = new RootObject
{
    Default = "TestMsg",
    GCM = new GCM { Data = new Data { Message = "TestMsg" } }
};

序列化:

var serialized = JsonConvert.SerializeObject(rootObject);

结果

"{\"default\":\"TestMsg\",\"GCM\":{\"data\":{\"message\":\"TestMsg\"}}}"

在你的方法中它看起来像这样:

public async Task<string> jsonConvert(string message)
{
    RootObject rootObject = new RootObject
    {
        Default = message,
        GCM = new GCM { Data = new Data { Message = message } }
    };

    var msg = await Task.Factory.StartNew(() => JsonConvert.SerializeObject(rootObject));
    return msg;
}