關於c#解析JSON格式在.netframeword 3.5以下版本的原始方法

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Runtime.Serialization;
using System.Collections.Generic;
using System.IO;
using System.Runtime.Serialization.Json;
using System.Text;
public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //接口返回的json格式 在C#裏面怎麼解析json
        string json = "{\"name\":\"張三\",\"age\":\"20\",\"phones\":[\"1311111\",\"135665646\"],\"familyMembers\":[{\"relation\":\"父親\",\"name\":\"張123\",\"age\":\"56\",\"phone\":[\"125455\",\"15652\"],\"work\":[{\"job\":\"工程師\",\"money\":\"15000\",\"adds\":\"南京路111號\",\"bus\":\"169路\"}]},{\"relation\":\"母親\",\"name\":\"王阿斯蒂芬\",\"age\":\"52\",\"phone\":[\"1254465\",\"1561552\"],\"work\":[{\"job\":\"工程師\",\"money\":\"15000\",\"adds\":\"南京路11號\",\"bus\":\"16路\"}]}]}";
        //方案:笨辦法,json格式中的一對{}對應C#中的一個類,類名自己定義,除{}以爲,json中所有的屬性都表示C#類中同名屬性,大小寫敏感,
        //       其中屬性爲數組時:
        //                        1、如果數組裏面的元素爲非json格式,則對應C#裏面的普通數組
        //                        2、如果數組裏面的元素是json格式,則對應C#裏面的範型數組,通常爲List類型
        Response.Write(json+"<br/>");
        User user = ToClass<User>(json);
        //string xml = "<xml>";
        //xml += "<username>" + user.name + "</username>";
        //xml += "<age>" + user.age + "</age>";
        //xml += "<phones>";
        //foreach (string phone in user.phones)
        //{
        //    xml += "<phone>" + phone + "</phone>";
        //}
        //xml += "</phones>";
        //xml += "<family>";
        //foreach (UserFamily family in user.familyMembers)
        //{
        //    xml += "<familyrelation>" + family.relation + "</familyrelation>";
        //    xml += "<familyname>" + family.name + "</familyname>";
        //    xml += "<age>" + family.age + "</age>";
        //    xml += "<phones>";
        //    foreach (string phone in family.phone)
        //    {
        //        xml += "<phone>" + phone + "</phone>";
        //    }
        //    xml += "</phones>";
        //    xml += "<work>";
        //    foreach (UserWork work in family.work)
        //    {
        //        xml += "<job>" + work.job + "</job>";
        //        xml += "<money>" + work.money + "</money>";
        //        xml += "<adds>" + work.adds + "</adds>";
        //        xml += "<bus>" + work.bus + "</bus>";
        //    }
        //    xml += "</work>";
        //}
        //xml += "</family>";
        //xml += "</xml>";
        //Response.Write(xml+"<br/>");
        if (user != null)
        {
            Response.Write("name:" + user.name + "<br />");
            Response.Write("age:" + user.age + "<br />");
            Response.Write("phones:" + user.phones.Length + "<br />");
            foreach (string phone in user.phones)
            {
                Response.Write(phone + "<br />");
            }
            Response.Write("family:" + user.familyMembers.Count + "<br />");
            foreach (UserFamily family in user.familyMembers)
            {
                Response.Write(family.relation + ":" + family.name + ",年齡" + family.age + "<br/>");
                Response.Write("phones:" + family.phone.Length + "<br/>");
                foreach (string phone in family.phone)
                {
                    Response.Write(phone + "<br/>");
                }
                foreach (UserWork work in family.work)
                {
                    Response.Write(work.job + " " + work.money + " " + work.adds + " " + work.bus + "<br/>");
                }
            }
        }
    }
    private static T ToClass<T>(string szJson)
    {
        T obj = Activator.CreateInstance<T>();
        using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(szJson)))
        {
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
            return (T)serializer.ReadObject(ms);
        }
    }
}

[DataContract]

public class User
{
    [DataMember]
    public string name = "";
    [DataMember]
    public string age = "";
    [DataMember]
    public string[] phones = new string[] { };
    [DataMember]
    public List<UserFamily> familyMembers = new List<UserFamily>();
}
[DataContract]
public class UserFamily
{
    [DataMember]
    public string relation = "";
    [DataMember]
    public string name = "";
    [DataMember]
    public string age = "";
    [DataMember]
    public string[] phone = new string[] { };
    [DataMember]
    public List<UserWork> work = new List<UserWork>();
}
[DataContract]
public class UserWork
{
    [DataMember]
    public string job = "";
    [DataMember]
    public string money = "";
    [DataMember]
    public string adds = "";
    [DataMember]
    public string bus = "";
}







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章