添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
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; }