有一段json数据:[
{"name":"7029","Id":"NPDW","extProperties":{"relay":"-1","Number":"null"}},
{"name":"lx7029","Id":"4605","extProperties":{"relay":"-1","Number":"4605"}}
]
我建两个class:public class A
{
public string ID
{
get ..
set ..
}
public string Name
{
...
}public ExtProperties ep
{
...
}
}public class ExtProperties
{
...
}
使用JsonConvert.DeserializeObject(jsonString, obj.GetType());倒是可以把A的所有属性取到,可是那个ep一直为null。如何把relay和Number都定义成A的属性,也是全都为null。请问像这样复杂的json数据格式,如何完全转为一个object,转换后可以取到每个对象中的自定义类型的属性
{"name":"7029","Id":"NPDW","extProperties":{"relay":"-1","Number":"null"}},
{"name":"lx7029","Id":"4605","extProperties":{"relay":"-1","Number":"4605"}}
]
我建两个class:public class A
{
public string ID
{
get ..
set ..
}
public string Name
{
...
}public ExtProperties ep
{
...
}
}public class ExtProperties
{
...
}
使用JsonConvert.DeserializeObject(jsonString, obj.GetType());倒是可以把A的所有属性取到,可是那个ep一直为null。如何把relay和Number都定义成A的属性,也是全都为null。请问像这样复杂的json数据格式,如何完全转为一个object,转换后可以取到每个对象中的自定义类型的属性
public ExtProperties ep
{
...
}改成public ExtProperties extProperties
{
...
}
string temp11111 = @"[
{""name"":""7029"",""Id"":""NPDW"",""extProperties"":{""relay"":""-1"",""Number"":""null""}},
{""name"":""lx7029"",""Id"":""4605"",""extProperties"":{""relay"":""-1"",""Number"":""4605""}}
]";
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(List<Person>)); byte[] buffer = Encoding.UTF8.GetBytes(temp11111);
using (MemoryStream stream = new MemoryStream(buffer))
{
List<Person> persons = serializer.ReadObject(stream) as List<Person>;
} [DataContract]
public class Person
{
[DataMember]
public string Id{get; set;} [DataMember]
public string name{get; set;} [DataMember]
public ExtProperties extProperties{get; set;}
} [DataContract]
public class ExtProperties
{
[DataMember]
public int relay{get; set;}
[DataMember]
public string Number{get; set;}
}
这样改就可以了,因为你的json字段名称和实体类字段名称不一样就为null了
using System.Runtime.Serialization.Json;public static T JsonDeserialize<T>(string jsonString)
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)))
{
return (T)ser.ReadObject(ms);
}
}
List<jsonOrder> list = JsonDeserialize<List<jsonOrder>>(str);
{
public string Id{get; set;}
public string name{get; set;}
public ExtProperties extProperties{get; set;}
}
public class ExtProperties
{
public int relay{get; set;}
public string Number{get; set;}
}
再用那组件解析json数据为对象即可!