using System.Runtime.Serialization; //注意,首先,要在引用中添加Serialization的引用,然后在using进来。
using System.Runtime.Serialization.Json;
using System.IO;
using System.Text;namespace TestJson
public partial class CsharpJson : System.Web.UI.Page
protected void Page_Load(object sender, EventArgs e)
//***不管下边json格式的字符串有多少层,都可以用实例类进行对应。这里相当于键值对中嵌套键值对,类中也可以对应嵌套类。
string json = @"{""ret"":""-1"",""msg"":{""error"":""null""}}";
DataContractJsonSerializer ser1 = new DataContractJsonSerializer(typeof(First));
using (MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(json)))
First f1 = ser1.ReadObject(ms) as First;
Response.Write("这里是json数据的第一个键值对,注意对应实体类的字段要和key的名称一致:"+f1.ret+
"<br />注意,这里是json值的第二个键值对,由于这个键的值是一个键值对,所以这里key要用类表示,类中再声明一个字段对应嵌套键值对的键:"+f1.msg);
//注意,实体类中的字段对应的是json格式中的键,而不是值。根据键就能得到值。所以值不用声明。键相当于一个指针,指向值的位置,得到了键,也就找到了得到值的钥匙。
Response.Write("<br />" + f1.msg.error);
} public class First
private string Ret;
//注意,类中能操作的字段名,一定要和json数据中的key名称一致。
//所以,平常类的属性名是Pascal命名法的,但是为了配合json,这里属性名改成了第一个字母小写。
public string ret
get { return Ret; }
set { Ret = value; }
} private Second Msg;
public Second msg
get { return Msg; }
set { Msg = value; }
} public class Second
private string Error; public string error
get { return Error; }
set { Error = value; }