C# 在.net中使用json进行反序列化(多种类型)

C# 在.net中使用json进行反序列化(多种类型),c#,.net,json.net,C#,.net,Json.net,我是.net的新手。也许这是一个基本问题。我通过在stackoverflow中查看类似的问题,尝试了许多方法。但到目前为止运气不好。实际问题是,, 我有下面的字符串,我想使用jsonconvert反序列化 {“Type1”:[{“id”:0,“x”:1,“y”:3,“frame”:0,“speed”:20},{“id”:9,“x”:1,“y”:3,“frame”:0,“speed”:20},““Type2”:[]} 我反序列化它的方式如下所示 var temp=JsonConvert.Deser

我是.net的新手。也许这是一个基本问题。我通过在stackoverflow中查看类似的问题,尝试了许多方法。但到目前为止运气不好。实际问题是,, 我有下面的字符串,我想使用jsonconvert反序列化

{“Type1”:[{“id”:0,“x”:1,“y”:3,“frame”:0,“speed”:20},{“id”:9,“x”:1,“y”:3,“frame”:0,“speed”:20},““Type2”:[]}

我反序列化它的方式如下所示

var temp=JsonConvert.DeserializeObject(主体)

我已经使用该工具从json字符串生成了类

public class Type1
{
    public int id { get; set; }
    public int x { get; set; }
    public int y { get; set; }
    public int frame { get; set; }
    public int speed { get; set; }
}

public class RootObject
{
    public List<Type1> Type1 { get; set; }
    public List<object> Type2 { get; set; }
}
公共类类型1
{
公共int id{get;set;}
公共整数x{get;set;}
公共整数y{get;set;}
公共整数帧{get;set;}
公共整数速度{get;set;}
}
公共类根对象
{
公共列表类型1{get;set;}
公共列表类型2{get;set;}
}
但当我尝试打印构造的对象数据时,仍然会得到以下执行选项
temp.Type1.Count

内部异常对象引用未设置为对象的实例。


期待你的回应

我不知道你的“身体”——物体到底是什么样子。但我用这段代码测试了它,它似乎工作得很好:

string body = @"{ 'Type1':[{'id':0,'x':1,'y':3,'frame':0,'speed':20},{'id':9,'x':1,'y':3,'frame':0,'speed':20}],'Type2':[]}";
var x = JsonConvert.DeserializeObject<RootObject>(body);
string body=@“{'Type1':[{'id':0,'x':1,'y':3,'frame':0,'speed':20},{'id':9,'x':1,'y':3,'frame':0,'speed':20},'Type2':[];
var x=JsonConvert.DeserializeObject(主体);

在您的问题中,您正在反序列化到
RootCommands
,但您的类被定义为
RootObject
。这是打字错误还是
RootCommands
是另一个类?如果我反序列化到
RootObject
,它可以正常工作: