注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

我只是一个人

我爱一个人

 
 
 

日志

 
 

json(json数组)序列化和反序列化,  

2012-05-31 21:34:17|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 

 using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Text;
using System.Web.Script.Serialization;
using System.Runtime.Serialization.Json;

 

/// <summary>
/// json反序列化对象
/// </summary>
public class Nature
{
    public string name { get; set; }//属性编号
    public string sex { get; set; }  //分类编号
}


/// <summary>
/// json反序列化对象
/// </summary>
public class Person
{
    public string name { get; set; }//属性编号
    public string sex { get; set; }  //分类编号
    public string age { get; set; }  //分类编号
    public string tel { get; set; }  //分类编号
}

 

public partial class _Default : System.Web.UI.Page
{


    protected void Page_Load(object sender, EventArgs e)
    {
        //复杂的json解析
        String json = "[{\"name\":\"zhangsan\",\"sex\":\"男\"},{\"name\":\"李四\",\"sex\":\"男\"},{\"name\":\"张娟\",\"sex\":\"女\"},{\"name\":\"慧娟\",\"sex\":\"女\"}]";
        List<Nature> nt = Deserialize<List<Nature>>(json);
        if (nt != null && nt.Count > 0)
        {
            Response.Write("复杂的json反序列化:<br/>");
            foreach (Nature dt in nt)//打印集合中的元素               
            {
                Response.Write(dt.name+"<br/>");
            }
        }


        //简单的json解析
        String json1 = "{\"name\":\"张三\",\"sex\":\"男\",\"age\":\"25\",\"tel\":\"1301554XXXX\"}";


        JavaScriptSerializer js = new JavaScriptSerializer();
        Person pe = js.Deserialize<Person>(json1);

        Response.Write("<br/>简单的json反序列化:" + pe.name);


        Response.Write("<h5>序列化操作</h5>");
        Response.Write("<h5>复杂对象序列化</h5>");
        List<Nature> list = new List<Nature>()  
        {  
            new Nature(){ name="张三", sex="男"},  
            new Nature(){ name="慧娟", sex="女"}  
        };
        string jsonTxt = JsonSerializer<List<Nature>>(list);
        Response.Write(jsonTxt);

        Response.Write("<h5>简单对象序列化</h5>");
        Person pes = new Person();

        pes.name = "姐姐";
        pes.sex = "女";
        pes.tel = "13015546592";
        pes.age = "23";

        string json1Txt = JsonSerializer<Person>(pes);
        Response.Write(json1Txt);
    }

 

    /// <summary>
    /// 反序列化json数组
    /// </summary>
    /// <typeparam name="T">对象</typeparam>
    /// <param name="json">json数组</param>
    /// <returns></returns>
    public  T Deserialize<T>(string json)
    {
        T obj = Activator.CreateInstance<T>();
        using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))
        {
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
            return (T)serializer.ReadObject(ms);
        }
    }


    /// <summary>
    /// 序列化对象为json
    /// </summary>
    /// <typeparam name="T">类型</typeparam>
    /// <param name="t">对象</param>
    /// <returns></returns>
    public  string JsonSerializer<T>(T t)
    {
        DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
        MemoryStream ms = new MemoryStream();
        ser.WriteObject(ms, t);
        string jsonString = Encoding.UTF8.GetString(ms.ToArray());
        ms.Close();
        return jsonString;
    }
}


上边是一个简单的json序列化和反序列化实例,下边说一个复杂的json反序列化

网站配置文件xml格式如下:

<WebSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <WebName>亿农商城</WebName>
  <WebUrl>http://www.yinongsha.com</WebUrl>
  <WebPath>/</WebPath>
  <WeblogPath>/Log</WeblogPath>
  <WebTel>0371-</WebTel>
  <WebFax>0371-</WebFax>
  <WebEmail>450940118@qq.com</WebEmail>
  <WebTitle>亿农商城火爆招商</WebTitle>
  <WebCopyright>版权</WebCopyright>
  <WebKeywords>关键词</WebKeywords>
  <WebDescription>描述</WebDescription>
  <WebCrod>备案</WebCrod>
  <WebStatus>
    <on>true</on>
    <dis>网站正在维护,请稍后访问</dis>
  </WebStatus>
  <uploading>
    <on>true</on>
    <mode>null</mode>
    <WebFilePath>/Update/</WebFilePath>
    <WebFileType>aaaaaaaaaa</WebFileType>
    <WebFileSize>0</WebFileSize>
  </uploading>
  <Thumbnail>
    <on>true</on>
    <proWidth>120</proWidth>
    <proHight>120</proHight>
  </Thumbnail>
  <Simages>
    <on>true</on>
    <proWidth>240</proWidth>
    <proHight>240</proHight>
  </Simages>
  <Watermark>
    <on>true</on>
    <site>RigthBottom</site>
    <type>0</type>
    <clarity>0.5</clarity>
    <marin>10</marin>
  </Watermark>
  <WText>
    <content>文本内容</content>
    <font>微软雅黑</font>
    <size>3</size>
    <color>#8600FF</color>
    <bold>true</bold>
  </WText>
  <WImg>
    <path>水印图片地址</path>
  </WImg>
</WebSet>

 

使用sxd工具生成实体类,这里不做表述

 

生成的json如下:

 


 

{    "WebName": "亿农商城",     "WebUrl": "http://www.yinongsha.com",     "WebPath": "/",     "WeblogPath": "/Log",     "WebTel": "0371-",     "WebFax": "0371-",     "WebEmail": "450940118@qq.com",     "WebTitle": "亿农商城火爆招商",     "WebKeywords": "关键词",     "WebDescription": "描述",     "WebCopyright": "备案",     "WebCrod": "版权",     "WebStatus": [      {        "on": "true",         "dis": "网站正在维护,请稍后访问"      }    ],     "uploading": [      {        "on": "true",         "mode": "null",         "WebFilePath": "/Update/",         "WebFileType": "aaaaaaaaaa",         "WebFileSizeTxt": "0"      }    ],     "Thumbnail": [      {        "on": "true",         "proWidth": "120",         "proHight": "120"      }    ],     "Simages": [      {        "on": "true",         "proWidth": "240",         "proHight": "240"      }    ],     "Watermark": [      {        "on": "true",         "site": "RigthBottom",         "type": "0",         "clarity": "0.5",         "marin": "10"      }    ],     "WText": [      {        "content": "文本内容",         "font": "微软雅黑",         "size": "3",         "color": "#8600FF",         "bold": "true"      }    ],     "WImg": [      {        "path": "水印图片地址"      }    ]  }  
 
后台反序列化json代码:

 using System.Web.Script.Serialization;

//.net程序集自带的类

JavaScriptSerializer js = new JavaScriptSerializer();

//将json格式的数据jsont转换为Model.WebSet实体类对象
   Model.WebSet aa = js.Deserialize<Model.WebSet>(jsont);


  评论这张
 
阅读(995)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017