C# json到对象,我的对象应该是什么样子?

C# json到对象,我的对象应该是什么样子?,c#,.net,json,json.net,C#,.net,Json,Json.net,我有一个类似这样的json字符串 { "class": "go.GraphLinksModel", "nodeDataArray": [ {"key":"CTR:2", "type":"Controller", "devicename":"ACU-1K", "imageUrl":"../../../../Images/ComputerSpeaker_32.png", "loc":"295 97"} ], "linkDataArray": [ ]} public class Floor

我有一个类似这样的json字符串

{ "class": "go.GraphLinksModel",
  "nodeDataArray": [ {"key":"CTR:2", "type":"Controller", "devicename":"ACU-1K", "imageUrl":"../../../../Images/ComputerSpeaker_32.png", "loc":"295 97"} ],
  "linkDataArray": [  ]}
public class FloorplanItem
{
    public string Class { get; set; }
    public string[] NodeDataArray { get; set; }
    public string[] LinkDataArray { get; set; }        
}
我创建了一个这样的类

{ "class": "go.GraphLinksModel",
  "nodeDataArray": [ {"key":"CTR:2", "type":"Controller", "devicename":"ACU-1K", "imageUrl":"../../../../Images/ComputerSpeaker_32.png", "loc":"295 97"} ],
  "linkDataArray": [  ]}
public class FloorplanItem
{
    public string Class { get; set; }
    public string[] NodeDataArray { get; set; }
    public string[] LinkDataArray { get; set; }        
}
我正在使用newtonsoft.json将json反序列化到一个对象,但是我得到了一些错误

JsonConvert.DeserializeObject<FloorplanItem>(json)
我对json还很陌生,所以如果这是琐碎的,请原谅。

使用。将json复制到那里,您将获得以下类:

public class NodeDataArray
{
    public string key { get; set; }
    public string type { get; set; }
    public string devicename { get; set; }
    public string imageUrl { get; set; }
    public string loc { get; set; }
}

public class RootObject
{
    public string @class { get; set; }
    public List<NodeDataArray> nodeDataArray { get; set; }
    public List<object> linkDataArray { get; set; }
}
公共类NodeDataArray
{
公共字符串密钥{get;set;}
公共字符串类型{get;set;}
公共字符串devicename{get;set;}
公共字符串imageUrl{get;set;}
公共字符串loc{get;set;}
}
公共类根对象
{
公共字符串@class{get;set;}
公共列表nodeDataArray{get;set;}
公共列表linkDataArray{get;set;}
}
上述类别将符合

使用要求。将json复制到那里,您将获得以下类:

public class NodeDataArray
{
    public string key { get; set; }
    public string type { get; set; }
    public string devicename { get; set; }
    public string imageUrl { get; set; }
    public string loc { get; set; }
}

public class RootObject
{
    public string @class { get; set; }
    public List<NodeDataArray> nodeDataArray { get; set; }
    public List<object> linkDataArray { get; set; }
}
公共类NodeDataArray
{
公共字符串密钥{get;set;}
公共字符串类型{get;set;}
公共字符串devicename{get;set;}
公共字符串imageUrl{get;set;}
公共字符串loc{get;set;}
}
公共类根对象
{
公共字符串@class{get;set;}
公共列表nodeDataArray{get;set;}
公共列表linkDataArray{get;set;}
}

上述类将符合您的
NodeDataArray
被定义为字符串数组,而您的JSON文档将其明确定义为对象。

此外,您还可以执行一个名为“粘贴JSON作为类”的特殊粘贴,该类将为您生成所需的CLR类:

public class FloorplanItem
{
    public string Class { get; set; }
    public NodeDataArray[] NodeDataArray { get; set; }
    public object[] LinkDataArray { get; set; }
}

public class NodeDataArray
{
    public string Key { get; set; }
    public string Type { get; set; }
    public string DeviceName { get; set; }
    public string ImageUrl { get; set; }
    public string Loc { get; set; }
}

反序列化似乎工作得很好(注意,我已经修复了属性名称,以遵守通用命名准则)


您的
NodeDataArray
被定义为字符串数组,而您的JSON文档明确将其定义为对象。

此外,您还可以执行一个名为“粘贴JSON作为类”的特殊粘贴,该类将为您生成所需的CLR类:

public class FloorplanItem
{
    public string Class { get; set; }
    public NodeDataArray[] NodeDataArray { get; set; }
    public object[] LinkDataArray { get; set; }
}

public class NodeDataArray
{
    public string Key { get; set; }
    public string Type { get; set; }
    public string DeviceName { get; set; }
    public string ImageUrl { get; set; }
    public string Loc { get; set; }
}

反序列化似乎工作得很好(注意,我已经修复了属性名称,以遵守通用命名准则)


太好了,我不知道有这样的工具。如果您不介意回答我的评论,json是否区分大小写?i、 例如,如果我的json属性是devicename,但在我的C#类中,我有devicename,可以吗?不太确定,您可以在这里阅读,也可以在代码中使用简单的json检查。默认情况下,json.NET不区分大小写。或者,您可以使用一个属性对属性进行注释:
[JsonProperty(“overridedPropertyName”)]
太好了,我不知道有这样的工具。如果您不介意回答我的评论,json是否区分大小写?i、 例如,如果我的json属性是devicename,但在我的C#类中,我有devicename,可以吗?不太确定,您可以在这里阅读,也可以在代码中使用简单的json检查。默认情况下,json.NET不区分大小写。或者,您可以使用一个属性对属性进行注释:
[JsonProperty(“overridedPropertyName”)]