JSON反序列化解析C#
我想将下面的json解析为dictionary或class对象,我使用的是json.net,但我不知道如何创建dictionary结构,甚至不知道如何创建class结构将其解析为object。我见过使用JObject解析json数组,但我不知道如何为这种json结构实现它JSON反序列化解析C#,c#,.net,arrays,json,dictionary,C#,.net,Arrays,Json,Dictionary,我想将下面的json解析为dictionary或class对象,我使用的是json.net,但我不知道如何创建dictionary结构,甚至不知道如何创建class结构将其解析为object。我见过使用JObject解析json数组,但我不知道如何为这种json结构实现它 { "room": 1, "meta": {}, "devices": [ { "asset": { "id": "asset_big_lamp_1" },
{
"room": 1,
"meta": {},
"devices": [
{
"asset": {
"id": "asset_big_lamp_1"
},
"device_name": "Lamp_1",
"device_type": "light",
"power_usage": "low",
"ui_coordinates": {
"x": "3.5",
"y": "-2.6",
"z": "-3.6"
},
"transducers": {
"relay": "ARE00",
"dimmer": "null"
}
}
如果您使用的是C#4.0或更新版本,则可以利用动态类型
这是一个使用众所周知的JSON序列化/反序列化库()的示例:
如果您以前从未使用过dynamic
打字,如果您的IntelliSense似乎不起作用,请不要害怕。这是因为所有属性和值仅在运行时已知。您的JSON不是有效的JSON。应该是:
{
"room": 1,
"meta": {
},
"devices": [
{
"asset": {
"id": "asset_big_lamp_1"
},
"device_name": "Lamp_1",
"device_type": "light",
"power_usage": "low",
"ui_coordinates": {
"x": "3.5",
"y": "-2.6",
"z": "-3.6"
},
"transducers": {
"relay": "ARE00",
"dimmer": "null"
}
}
]
}
它用C#表示为以下类别:
public class Root
{
public int room { get; set; }
public Meta meta { get; set; }
public Device[] devices { get; set; }
}
public class Meta
{
}
public class Device
{
public Asset asset { get; set; }
public string device_name { get; set; }
public string device_type { get; set; }
public string power_usage { get; set; }
public Ui_Coordinates ui_coordinates { get; set; }
public Transducers transducers { get; set; }
}
public class Asset
{
public string id { get; set; }
}
public class Ui_Coordinates
{
public string x { get; set; }
public string y { get; set; }
public string z { get; set; }
}
public class Transducers
{
public string relay { get; set; }
public string dimmer { get; set; }
}
然后,可以使用以下代码反序列化JSON字符串:
var obj = JsonConvert.DeserializeObject<Root>(jsonString);
var obj=JsonConvert.DeserializeObject(jsonString);
欢迎来到stackoverflow!到目前为止你做了什么?什么有效/无效?根据此JSon创建类。解析后var res=(YourClass)Newtonsoft.Json.JsonConvert.DeserializeObject(s,typeof(YourClass))代码>使用System.Web.Script.Serialization.JavaScriptSerializer字典JSONDict=(字典)(新的System.Web.Script.Serialization.JavaScriptSerializer()).DeserializeObject(JSON)代码>
var obj = JsonConvert.DeserializeObject<Root>(jsonString);