关于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
    评论
Json.NET 描述: json。 网络是一个流行的高性能JSON为。NET框架 灵活的JSON序列化器对之间的转换。净对象和JSON linq到JSON用于手动阅读和写作JSON 高性能,速度比。净的内置JSON序列化器 写缩进,容易阅读JSON JSON和XML之间进行转换 支持: .NET 2, .NET 3.5, .NET 4, .NET 4.5, Silverlight, Windows Phone and Windows 8 Store 版本: Json.NET has different libaries for the various .NET Framework versions. -Net45: .NET latest (4.5) -Net40: .NET 4.0 -Net35: .NET 3.5 -Net20: .NET 2.0 -WinRT: Windows 8 Store -Portable45: .NET 4.5, Windows Phone 8, Windows 8 Store -Portable40: .NET 4.0, Windows Phone 7, Windows 8 Store, Silverlight 4 Notes: Microsoft stopped support for the Compact Framework in Visual Studio 2010. For a Compact Framework 3.5 build download Json.NET 3.5. For a Silverlight 3.0 build download Json.NET 3.5. Microsoft Visual Studio 2010 重新生成解决方案的一些警告处理 警告 2 预定义类型“System.Action”是在全局别名的多个程序集中定义的;将使用“c:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework \v4.0\mscorlib.dll”中的定义 ClassLibrary1 警告 3 预定义类型“System.Action”是在全局别名的多个程序集中定义的;将使用“c:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework \v4.0\mscorlib.dll”中的定义 ClassLibrary1 警告 4 预定义类型“System.Action”是在全局别名的多个程序集中定义的;将使用“c:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework \v4.0\mscorlib.dll”中的定义 ClassLibrary1 警告 5 预定义类型“System.Action”是在全局别名的多个程序集中定义的;将使用“c:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework \v4.0\mscorlib.dll”中的定义 ClassLibrary1 警告 6 预定义类型“System.Func”是在全局别名的多个程序集中定义的;将使用“c:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework \v4.0\mscorlib.dll”中的定义 ClassLibrary1 警告 7 预定义类型“System.Func”是在全局别名的多个程序集中定义的;将使用“c:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework \v4.0\mscorlib.dll”中的定义 ClassLibrary1 警告 8 预定义类型“System.Func”是在全局别名的多个程序集中定义的;将使用“c:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework \v4.0\mscorlib.dll”中的定义 ClassLibrary1 警告 9 预定义类型“System.Func”是在全局别名的多个程序集中定义的;将使用“c:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework \v4.0\mscorlib.dll”中的定义 ClassLibrary1 警告 10 预定义类型“System.Func”是在全局别名的多个程序集中定义的;将使用“c:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework \v4.0\mscorlib.dll”中的定义 ClassLibrary1 问题原因:检查程序发现,由于项目中引用了Newtonsoft.Json.Net20,从而造成系统的类重名(项目FRAMEWORK的版本4.0)。 Newtonsoft.Json.Net 包括: .NET 2, .NET 3.5, .NET 4, .NET 4.5, Silverlight, Windows Phone and Windows 8 Store,所有dll文件和源码,有需要的同学可以直接下载。 个人网站多多支持:www.mlyuansu.com

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值