【发布时间】:2021-04-11 17:59:33
【问题描述】:
我正在尝试反序列化具有已知对象名称的 json,但我很难找到一个好的示例。
我可以使用:dynamic meta = JsonConvert.DeserializeObject( json );
可行,但我想使用:metadata meta = JsonConvert.DeserializeObject<metadata>( json );
但似乎不起作用。
{
"metadata": {
"topic": "Some Topic",
"schemaVersion": "1.0",
"deprecated": false
},
"notification": {
"notificationId": "c829ec0b9b24",
"eventDate": "2021-04-11T14:58:19.019Z",
"publishDate": "2021-04-11T14:58:22.599Z",
"publishAttemptCount": 1,
"data": {
"username": "UserName",
"userId": "UserId",
"eiasToken": "Token"
}
}
}
类
public class metadata
{
public String topic { get; set; }
public String schemaVersion { get; set; }
public Boolean deprecated { get; set; }
}
public class notification
{
public String notificationId { get; set; }
public DateTime eventDate { get; set; }
public DateTime publishDate { get; set; }
public Int32 publishAttemptCount { get; set; }
public Data data { get; set; }
}
public class Data
{
public String username { get; set; }
public String userId { get; set; }
public String eiasToken { get; set; }
}
页面加载事件
String json;
using ( StreamReader reader = new StreamReader( Request.InputStream ) )
{
json = reader.ReadToEnd();
}
metadata meta = JsonConvert.DeserializeObject<metadata>( json );
//meta class is null and does not contain data
//Next line evaluates to NULL and does not work
String topic = meta.topic;
【问题讨论】:
-
试试
public class Root { public metadata metadata { get; set; } public notification notification { get; set; } },然后JsonConvert.DeserializeObject<Root>(json);
标签: c# json serialization