关于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 = "";
}







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值