string jsonStr = @"{""fruits"":{""a"":""orange"",""b"":""banana"",""c"":""apple""},""name"":{""z"":""zhangsan"",""l"":""lisi""}}"; JavaScriptSerializer serializer = new JavaScriptSerializer(); Dictionary<string, object> json = serializer.DeserializeObject(jsonStr) as Dictionary<string, object>; Dictionary<string, object> obj = json["fruits"] as Dictionary<string, object>; Console.WriteLine(obj["a"]); Console.ReadLine(); 看看
既然你诚心诚意的问了,哥还是大发慈悲的告诉你好了。 捂好蛋蛋,再看下面,不然会很疼的 [DataContract] public class DanTengObj { [DataMember(Order = 1, Name = "fruits")] public Fruits fruits { get; set; } [DataMember(Order = 2, Name = "name")] public Name name { get; set; } [DataContract] public class Fruits { [DataMember(Order = 1, Name = "a")] public string a { get; set; } [DataMember(Order = 2, Name = "b")] public string b { get; set; } [DataMember(Order = 3, Name = "c")] public string c { get; set; } } [DataContract] public class Name { [DataMember(Order = 1, Name = "z")] public string z { get; set; } [DataMember(Order = 1, Name = "l")] public string l { get; set; } } } static void DanTengJsonTest() { string jsonStr = @"{""fruits"":{""a"":""orange"",""b"":""banana"",""c"":""apple""},""name"":{""z"":""zhangsan"",""l"":""lisi""}}"; DataContractJsonSerializer js = new DataContractJsonSerializer(typeof(DanTengObj)); using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonStr))) { DanTengObj obj = js.ReadObject(ms) as DanTengObj; Console.WriteLine(obj.fruits.a); } }
我在最后取值的之后出错的,提示 未将对象引用设置到对象的实例。 string s; DataContractJsonSerializer js = new DataContractJsonSerializer(typeof(GetAccessCompanyM)); using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(html))) { GetAccessCompanyM obj = js.ReadObject(ms) as GetAccessCompanyM; //Console.WriteLine(obj.fruits.a); s = obj.result.toreturn.memberId.ToString(); }
看看
捂好蛋蛋,再看下面,不然会很疼的
[DataContract]
public class DanTengObj
{
[DataMember(Order = 1, Name = "fruits")]
public Fruits fruits { get; set; }
[DataMember(Order = 2, Name = "name")]
public Name name { get; set; } [DataContract]
public class Fruits
{
[DataMember(Order = 1, Name = "a")]
public string a { get; set; }
[DataMember(Order = 2, Name = "b")]
public string b { get; set; }
[DataMember(Order = 3, Name = "c")]
public string c { get; set; }
} [DataContract]
public class Name
{
[DataMember(Order = 1, Name = "z")]
public string z { get; set; }
[DataMember(Order = 1, Name = "l")]
public string l { get; set; }
}
} static void DanTengJsonTest()
{
string jsonStr = @"{""fruits"":{""a"":""orange"",""b"":""banana"",""c"":""apple""},""name"":{""z"":""zhangsan"",""l"":""lisi""}}"; DataContractJsonSerializer js = new DataContractJsonSerializer(typeof(DanTengObj)); using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonStr)))
{
DanTengObj obj = js.ReadObject(ms) as DanTengObj;
Console.WriteLine(obj.fruits.a);
}
}
JavaScriptSerializer读出来就是key-value pair这种Dictionary<string, object>的东西,这个比较通用。
DataContractJsonSerializer类似于其他的Serializer,比如XMLSerializer一类的,是对象序列化/反序列化用的,所以你看到上面要先定义一个Obj对象,把json字串里面的key都定义成属性,最后执行反序列化就出来了一个Obj。
string s;
DataContractJsonSerializer js = new DataContractJsonSerializer(typeof(GetAccessCompanyM)); using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(html)))
{
GetAccessCompanyM obj = js.ReadObject(ms) as GetAccessCompanyM;
//Console.WriteLine(obj.fruits.a);
s = obj.result.toreturn.memberId.ToString();
}