C# 如何反序列化具有不同类型的multilple对象的JSON字符串

C# 如何反序列化具有不同类型的multilple对象的JSON字符串,c#,json-deserialization,jsonconvert,C#,Json Deserialization,Jsonconvert,我有以下json字符串:“{itemList\”:[{“id\”:1,“name\”:“Item 1 name\”},{“id\”:2,“name\”:“Item 2 name\”}],“listInfo:{“info1”:1,“info2”:“bla”} 我有以下课程: class ItemClass { public int Id; public string Name; } class ListInfo { public int Info1 { get; set;

我有以下json字符串:
“{itemList\”:[{“id\”:1,“name\”:“Item 1 name\”},{“id\”:2,“name\”:“Item 2 name\”}],“listInfo:{“info1”:1,“info2”:“bla”}

我有以下课程:

class ItemClass
{
    public int Id;
    public string Name;
}

class ListInfo
{
    public int Info1 { get; set; }
    public string Info2 { get; set; }
}

如何将json字符串反序列化为它包含的两个不同对象,
ItemList
ListInfo
ItemList
应该反序列化为一个
List
。我已经多次使用JsonConvert反序列化,但使用的是一个表示单个对象的json字符串。

您的json格式不正确等等。更改
“{itemList\”:[{“id\”:1,“name\”:“Item 1 name\”},{“id\”:2,“name\”:“Item 2 name\”}],“listInfo:{“info1”:1,“info2”:“bla”}

“{\”项目列表\\”:[{\“id\”:1,“名称\:“项目1名称\”},{\“id\”:2,“名称\:“项目2名称\”}],“列表信息\:{\“信息1\”:1,“信息2\:“bla\”}

然后创建一个这样的类

公共类基类
{
公共列表项列表{get;set;}
公共ListInfo ListInfo{get;set;}
}
并使用
JsonConvert.DeserializeObject
将json反序列化到类中

string json=“{\'itemList\”:[{\'id\':1,\'name\':\'Item 1 name\',{\'id\':2,\'name\':\'Item 2 name\'],\'listInfo\':{\'info1\':1,\'info2\':\'bla\'};
var data=JsonConvert.DeserializeObject(json);

首先创建一个临时类来读取Json

//新的临时类
公共课临时课
{
公共列表项列表{get;set;}
公共ListInfo ListInfo{get;set;}
}
公共类ItemClass
{
公共int Id;
公共字符串名称;
}
公共类列表信息
{
公共int Info1{get;set;}
公共字符串Info2{get;set;}
}
上面的temp类将保存反序列化对象。然后使用以下方法反序列化并读取两个不同的对象

List ItemsList=((TempClass)JsonConvert.DeserializeObject(strJsom,new JsonSerializerSettings()).ItemsList;
ListInfo ListInfo=((TempClass)JsonConvert.DeserializeObject(strJsom,new JsonSerializerSettings()).ListInfo;
现在,您可以遍历
ItemsList
,从Json中读取每个
itemsclass


希望这有帮助。

我明白了。我在单元测试中这样做。我想我最好还是用弦来做比较。有没有办法从json字符串中获取
itemList
对象?然后,我可以序列化要与之进行比较的对象,并进行字符串比较。