首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在c#中反序列化Json文件以插入到表中

如何在c#中反序列化Json文件以插入到表中
EN

Stack Overflow用户
提问于 2018-05-28 19:44:42
回答 2查看 468关注 0票数 2

我有以下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);
        }
    }

您给了我以下错误

Error CS0029 No se puede implícitamente el tipo 'WebApplication1.Models.RootModel‘en 'System.Collections.Generic.List’

我真的不知道我是否在正确的轨道上,是否有必要反序列化才能在DB中插入,或者是否有其他方法?

提前感谢你的帮助

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-28 19:47:17

正如错误所述,它不能隐式地将模型的实例转换为模型的集合。

您正在尝试返回单个实例:

return JsonConvert.DeserializeObject<Models.RootModel>(json);

但是您的方法期望返回一个实例列表:

public static List<Models.RootModel> getJson()

如果您只返回一个实例(因为JSON表示一个对象,而不是一个对象数组),请更改您的方法以反映这一点:

public static Models.RootModel getJson()
票数 2
EN

Stack Overflow用户

发布于 2018-05-28 19:57:52

更改您的代码

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);
        }
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50565658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档