首页 > Web开发 > 详细

.NET中JSON的序列化和反序列化

时间:2015-10-28 01:17:40      阅读:252      评论:0      收藏:0      [点我收藏+]

.NET 中有两种方法进行JSON的操作分别需要引用不同的命名空间

1.System.Runtime.Serialization.Json(System.Runtime.Serialization.dll)

public class JsonHelper
{
    /// <summary>
    /// 生成Json格式
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="obj"></param>
    /// <returns></returns>
    public static string GetJson<T>(T obj)
    {
        DataContractJsonSerializer json = new DataContractJsonSerializer(obj.GetType());
        using (MemoryStream stream = new MemoryStream())
        {
            json.WriteObject(stream, obj);
            string szJson = Encoding.UTF8.GetString(stream.ToArray()); return szJson;
        }
    }
    /// <summary>
    /// 获取Json的Model
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="szJson"></param>
    /// <returns></returns>
    public static T ParseFromJson<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);
        }
    }
}


public class topMenu
{
    public string id { get; set; }
    public string title { get; set; }
    public string defaulturl { get; set; }
}

具体的操作代码

topMenu t_menu = new topMenu()
            {
                id = "1",
                title = "全局",
                defaulturl = "123456"
            };
List<topMenu> l_topmenu = new List<topMenu>();
for (int i = 0; i < 3; i++)
            {
                l_topmenu.Add(t_menu);
            }
Response.Write(JsonHelper.GetJson<List<topMenu>>(l_topmenu));

输出结果为:
       [{"defaulturl":"123456","id":"1","title":"全局"},{"defaulturl":"123456","id":"1","title":"全局"},{"defaulturl":"123456","id":"1","title":"全局"}] 

下面利用上面ParseFromJson方法读取Json
     输出结果为:全局

string szJson = @"{""id"":""1"",""title"":""全局"",""defaulturl"":""123456""} ";
      topMenu t_menu2 = JsonHelper.ParseFromJson<topMenu>(szJson);
      Response.Write(t_menu2.title);

 

2.System.Web.Script.Serialization(System.Web.Extensions.dll)

JavaScriptSerializer jss = new JavaScriptSerializer(); 
Response.Write( jss.Serialize(l_topmenu )); 
string szJson = @"{""id"":""1"",""title"":""全局"",""defaulturl"":""123456""} ";
topMenu toptabmenu = jss.Deserialize<topMenu>(szJson); 
Response.Write( jss.Serialize(toptabmenu.title)); 

 

.NET中JSON的序列化和反序列化

原文:http://www.cnblogs.com/answercard/p/4916087.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!