为了账号安全,请及时绑定邮箱和手机立即绑定

将 Json 文件转换为 C# 并存储在数据库中

将 Json 文件转换为 C# 并存储在数据库中

C#
长风秋雁 2021-06-30 13:55:52
我想将 JSON 文件转换为 C# 类并存储在数据库中。我的代码string json = new System.Net.WebClient().DownloadString(Path);  {  "qqq": "xxxx",  "rrrr": "xxxxx",  "abc": {    "abc1": "xxxxx",    "abc2": "xxxxx",    "abc3": "xxxxx",    "abc4": "xxxxx",    "abc5": "2018-05-28T06:10:00.000"  },  "xyx": {    "xyz1": "xxxxx",    "xyz2": "xxxxx",    "xyz3": "xxxxx",    "xyz4": "xxxxx",    "xyz5": "2018-05-28T07:30:00.000"  }},{  "qqq": "xxxxx",  "rrrr": "xxxxx",  "abc": {    "abc1": "xxxxx",    "abc2": "xxxxx",    "abc3": "xxxxx",    "abc4": "xxxxx",    "abc5": "2018-05-28T06:10:00.000"  },  "xyz": {    "xyz1": "xxxxx",    "xyz2": "xxxxx",    "xyz3": "xxxxx",    "xyz4": "xxxxx",    "xyz5": "2018-05-28T07:30:00.000",  }}public class Rootobject{  public string qqq { get; set; }  public string rrrr { get; set; }  public Abc abc { get; set; }  public Xyz xyz { get; set; }  }public class Abc{  public string abc1 { get; set; }  public string abc2 { get; set; }  public string abc3 { get; set; }  public string abc4 { get; set; }  public DateTime abc5 { get; set; }}public class Xyz{  public string xyz1 { get; set; }  public string xyz2 { get; set; }  public string xyz3 { get; set; }  public string xyz4 { get; set; }  public DateTime xyz5 { get; set; }}Rootobject ra = new Rootobject();            ra = JsonConvert.DeserializeObject<Rootobject>(json);我收到以下错误无法将当前 JSON 数组(例如 [1,2,3])反序列化为类型“testProject.Form1+Rootobject”,因为该类型需要一个 JSON 对象(例如 {\"name\":\"value\ "}) 以正确反序列化。\r\n要修复此错误,请将 JSON 更改为 JSON 对象
查看完整描述

3 回答

?
缥缈止盈

TA贡献2041条经验 获得超4个赞

在提供的 JSON 中,有 RootObjects 的集合但不是一个。您必须反序列化为 RootObjects 数组。

Rootobject[] ra ;    
        ra = JsonConvert.DeserializeObject<Rootobject[]>(json);

JSON 中也缺少 []


查看完整回答
反对 回复 2021-07-10
?
德玛西亚99

TA贡献1770条经验 获得超3个赞

第一件事 您提供的 JSON 无效。你可以在这里测试JsonLint 有效的 JSON 是..


[{

    "qqq": "xxxx",

    "rrrr": "xxxxx",

    "abc": {

        "abc1": "xxxxx",

        "abc2": "xxxxx",

        "abc3": "xxxxx",

        "abc4": "xxxxx",

        "abc5": "2018-05-28T06:10:00.000"

    },

    "xyx": {

        "xyz1": "xxxxx",

        "xyz2": "xxxxx",

        "xyz3": "xxxxx",

        "xyz4": "xxxxx",

        "xyz5": "2018-05-28T07:30:00.000"

    }

 }, {

    "qqq": "xxxxx",

    "rrrr": "xxxxx",

    "abc": {

        "abc1": "xxxxx",

        "abc2": "xxxxx",

        "abc3": "xxxxx",

        "abc4": "xxxxx",

        "abc5": "2018-05-28T06:10:00.000"

    },

    "xyz": {

        "xyz1": "xxxxx",

        "xyz2": "xxxxx",

        "xyz3": "xxxxx",

        "xyz4": "xxxxx",

        "xyz5": "2018-05-28T07:30:00.000"

    }

 }]

那么模型应该是


public class Rootobject

    {

        public Class1[] Property1 { get; set; }

    }


    public class Class1

    {

        public string qqq { get; set; }

        public string rrrr { get; set; }

        public Abc abc { get; set; }

        public Xyx xyx { get; set; }

        public Xyz xyz { get; set; }

    }


    public class Abc

    {

        public string abc1 { get; set; }

        public string abc2 { get; set; }

        public string abc3 { get; set; }

        public string abc4 { get; set; }

        public DateTime abc5 { get; set; }

    }


    public class Xyx

    {

        public string xyz1 { get; set; }

        public string xyz2 { get; set; }

        public string xyz3 { get; set; }

        public string xyz4 { get; set; }

        public DateTime xyz5 { get; set; }

    }


    public class Xyz

    {

        public string xyz1 { get; set; }

        public string xyz2 { get; set; }

        public string xyz3 { get; set; }

        public string xyz4 { get; set; }

        public DateTime xyz5 { get; set; }

    }

现在你试试,也许这会解决问题,如果没有请提及更多细节。


查看完整回答
反对 回复 2021-07-10
  • 3 回答
  • 0 关注
  • 325 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信