在C#中反序列化json字符串的麻烦

时间:2019-05-21 01:04:20

标签: c# json

我正在尝试使用一个类反序列化json字符串,但出现此错误,请帮忙。

我收到此错误

  

“无法将当前JSON数组(例如[1,2,3])反序列化为type   'JsonTest.EmailModels',因为该类型需要一个JSON对象(例如   {“ name”:“ value”})正确反序列化。要解决此错误,请   将JSON更改为JSON对象(例如{“ name”:“ value”})或更改   将反序列化类型转换为数组或实现集合的类型   接口(例如ICollection,IList),例如List   从JSON数组反序列化。也可以添加JsonArrayAttribute   类型,以强制其从JSON数组反序列化。”

 static void Main(string[] args)
    {
        string json = @"[
'insurance':{
    'individual':{
            'registrationID':'',
       'amount':'',
       'Fullname':'',
       'Email':''
    },
    'multi':{
            'borRegistrationID':'111111',
       'amount':'132',
       'paidfor':{
                '2391734':'44',
         '4773998':'44'
       },
       'emailList':{
                '2391734':'jfowler@thepelicangroup.ca',
       '4773998':'edaho.properties@gmail.com'
       }
        }
    }

]";
        EmailModels emailModel = JsonConvert.DeserializeObject<EmailModels>(json);
        foreach (var item in emailModel.insurance.multi.paidFor)
        {
                Console.WriteLine(item.Key);
                Console.WriteLine(item.Value);
        }

    }
}
public class EmailModels
{
    public Insurance insurance { get; set; }
}

public class Insurance
{
    public InsIndividual individual { get; set; }
    public InsMulti multi { get; set; }
}

public class InsIndividual
{
    public string registrationID { get; set; }
    public string amount { get; set; }
    public string FullName { get; set; }
    public string Email { get; set; }
}
public class InsMulti
{
    public string borRegistrationID { get; set; }
    public string amount { get; set; }
    public Dictionary<string, string> paidFor { get; set; }
    public Dictionary<string, string> emailList { get; set; }
}

它应该显示(2391734,44                    4773998,44)

2 个答案:

答案 0 :(得分:0)

一开始看起来就不对,保险不包含在物体中

[ 'insurance':{

应该是

[ {'insurance':{...}  } ]

答案 1 :(得分:0)

作为JSON的基本语法,您必须使用{}而不是[],因为EmailModels不是数组而是对象。