我有以下json,我试图反序列化将其插入到SQL表中,我试图使用JsonConvert和JObject而没有正面结果
的Json
{
"id": "123123",
"publisherId": "Empresa",
"notificationType": "Orden",
"headers": {
"providerId": "ABC123"
},
"content": {
"id": "987987",
"orderId": "4444444",
"apiName": "Services",
"method": "GetOrder",
"verb": "GET",
"urlMethod": "https://api.com"
},
"contentVersion": "1.0"
}
模型
public class Headers
{
public string providerId { get; set; }
}
public class Content
{
public string id { get; set; }
public string orderId { get; set; }
public string apiName { get; set; }
public string method { get; set; }
public string verb { get; set; }
public string urlMethod { get; set; }
}
public class RootModel
{
public string id { get; set; }
public string publisherId { get; set; }
public string notificationType { get; set; }
public Headers headers { get; set; }
public Content content { get; set; }
public string contentVersion { get; set; }
}
代码
public static List<Models.RootModel> getJson()
{
using (StreamReader r = new StreamReader("c:\\LOG\\20180528\\201805281039.json"))
{
string json = r.ReadToEnd();
return JsonConvert.DeserializeObject<Models.RootModel>(json);
}
}
您给我以下错误
错误CS0029 No se puede convertirimplícitamenteeltipo'WebApplication1.Models.RootModel'en'System.Collections.Generic.List'
我真的不知道我是否在正确的轨道上,是否有必要反序列化以插入数据库,还是有另一种方式?
提前感谢您的帮助
答案 0 :(得分:2)
正如错误所述,它不能隐式地将模型实例转换为模型的集合。
您正在尝试返回单个实例:
return JsonConvert.DeserializeObject<Models.RootModel>(json);
但是你的方法希望返回一个实例列表:
public static List<Models.RootModel> getJson()
如果您只是返回一个实例(因为JSON代表一个对象,而不是一个对象数组),请更改您的方法以反映:
public static Models.RootModel getJson()
答案 1 :(得分:1)
更改您的代码
public static Models.RootModel getJson()
{
using (StreamReader r = new StreamReader("c:\\LOG\\20180528\\201805281039.json"))
{
string json = r.ReadToEnd();
return JsonConvert.DeserializeObject<Models.RootModel>(json);
}
}