c# - C#中的Json数组反序列化问题
问题描述
我有一个将 Json 数组映射到 C# 对象的 Web API 方法。
我的参数应该如下所示:
[{"event":"inbound","msg":"TestMEssage","ts":123456}]
我的代码是
var events = JsonConvert.DeserializeObject<IEnumerable<MailEvent>>(mandrill_inbound);
public class MailEvent
{
[JsonProperty(PropertyName = "event")]
public string Event { get; set; }
[JsonProperty(PropertyName = "msg")]
public string Msg { get; set; }
[JsonProperty(PropertyName = "ts")]
public string TimeStamp { get; set; }
}
但是当我试图反序列化 JSON 时,它会显示异常。
但是如果我试图在方法中设置一个变量,比如
Public const string mandrill_inbound = @"[
{
""event"": ""inbound"",
""msg"": ""tewst"",
""ts"": 1368214102
},
{
""event"": ""inbound"",
""msg"": ""test2"",
""ts"": 1368214102
}
]";
这段代码对我来说很完美。
请注意,它以开头,@""
并且所有键值都用多个双引号(""event""
)括起来。
其实这两种格式有什么区别。
任何帮助将不胜感激。
解决方案
这实际上是相同的字符串,无需转义任何内容。
这@
表示字符串按原样声明,忽略普通字符串中表示某种转义的任何和所有字符。
唯一的例外是双箭头报价。当字符串以@ 为前缀时,需要对双引号进行转义。做到这一点的方法是使用""
所以没有@的相同字符串将是
Public const string mandrill_inbound = "[\n" +
"{\n" +
"\"event\": \"inbound\",\n" +
"\"msg\": \"tewst\",\n" +
"\"ts\": 1368214102\n" +
"},\n" +
"{\n" +
"\"event\": \"inbound\",\n" +
"\"msg\": \"test2\",\n" +
"\"ts\": 1368214102\n" +
"}]";
上面的字符串也应该有效。你得到什么异常?
推荐阅读
- node.js - NodeJS lambda dynamoDB putItem 仅当主排序键不同时
- python - pytz 时区 DST 问题
- c++ - 何时调用移动构造函数?
- c - 链表上合并排序的时间效率与指针数组
- python - 如何在 MapReduce 中查找前 10 个元素
- kubernetes-ingress - 使用 GCE + ExternalName 创建入口路径时出错
- javascript - gatsbyjs中的bulma菜单切换不起作用
- ansible - 在剧本中使用命令任务时在 Ansible 中出现内存错误
- python - How to create list of dictionaries from a single dictionary?
- excel - 如何以用户形式将数据传输到同一工作簿中的不同工作表(使用 ComboBox1)?