如题,我就不多说了,自己看代码的,很好理解

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 = "1301554XXXX";
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;
}
}

运行图片:

源码:http://files.cnblogs.com/netqq/Json.zip

json数组的序列化和反序列化json数组的序列化和反序列化的更多相关文章

  1. Java基础/利用fastjson反序列化json为对象和对象数组

    利用fastjson反序列化json为对象和对象数组 利用 fastjosn 将 .json文件 反序列化为 java.class 和 java.util.List fastjson 是一个性能很好的 ...

  2. .NET中如何使用反序列化JSON字符串/序列化泛型对象toJsonStr

    在进行 .NET Web MVC 框架开发的网站程序的时候,我们都会遇到最关键的问题,数据传输.   .NET MVC 4中的ControllerBase类建议我们用ViewBag动态数据字典形式(t ...

  3. C#序列化及反序列化Json对象通用类JsonHelper

    当今的程序界Json大行其道.因为Json对象具有简短高效等优势,广受广大C#码农喜爱.这里发一个序列化及反序列化Json对象通用类库,希望对大家有用. public class JsonHelper ...

  4. Jackson序列化和反序列化Json数据完整示例

    Jackson序列化和反序列化Json数据 Web技术发展的今天,Json和XML已经成为了web数据的事实标准,然而这种格式化的数据手工解析又非常麻烦,软件工程界永远不缺少工具,每当有需求的时候就会 ...

  5. 在MVC中使用Json.Net序列化和反序列化Json对象

    在.Net的MVC开发中,经常会使用到Json对象,于是,系统提供了JsonResult这个对象,其本质是调用.Net系统自带的Json序列化类JavaScriptSerializer对数据对象进行序 ...

  6. c# .net 读取json 字符串 与序列化和反序列化json字符串

    命名空间 using Newtonsoft.Json.Linq; JObject obj = JObject.Parse("json字符串");用 obj["" ...

  7. 1.部分(苹果)移动端的cookie不支持中文字符,2.从json字符串变为json对象时,只支持对象数组

    1.移动端的cookie不支持中文字符.可以用编码,解码的方式解决. 2.json字符串变成相应 的,json对象数组字符串.就这样 3.不同客户端(移动端.电脑)的请求,在C#服务端的取时间的格式竟 ...

  8. 前台的js对象数组传到后台处理。在前台把js对象数组转化为json字符串,在后台把json字符串解析为List<>

    前台的js对象数组传到后台处理.在前台把js对象数组转化为json字符串,在后台把json字符串解析为List<>

  9. JSON用法之将PHP数组转JS数组,JS如何接收PHP数组

    先看php文件,当我们获取到$arr这个数组后 foreach ($arr as $value) { $json .= json_encode($value) . ','; } echo '[' . ...

随机推荐

  1. easyui-layout 布局自适应

    最近在把以前写的一个项目改成用easyui做前端.过程中遇到了不少问.其中一个就是datagrid不能很好的布.想了好多办法都有局限.最后想到会不会是布局的问题,经过实,最后问题解. 1:比如在项目中 ...

  2. xamarin.ios 跳转页面

    一:用Segue跳转页面 按住Ctrl连线,选择show,后台覆写 ShouldPerformSegue方法,返回True跳转,False取消跳转.   二:通过代码跳转至StoryBoard页面 U ...

  3. redis事务详解

    mysql中也存在事务的概念.其实事务的定义是一样的.一组操作的集合,作为一个整体,要么全执行,要么全不执行. redis设置事务三步骤: 开始事务 :multi 操作加入事务队列 执行事务 :exe ...

  4. CentOS6.5安装telnet命令

    安装好memcache之后想进入连接测试,telnet localhost 11211发现竟然提示没有telnet这个命令,于是需要自己进行安装. 一.查看本机是否安装telnet #rpm -qa ...

  5. windows server 2003安装sp4时的问题

    "以前进行的程序安装创建了挂起的文件操作.运行程序之前,必须重新起动计算机."的解决办法 在安装SQL 2000数据库和SQLSP4补丁时,经常会提示“以前进行的程序安装创建了挂起 ...

  6. Loadrunner中web_find和web_reg_find函数的使用与区别

    总结一下Loadrunner中的检查点函数,主要介绍两个函数:web_find()和web_reg_find():这两个函数均用于内容的查找,但两者也有本质的区别,具体介绍如下:一.web_find( ...

  7. 初学File类

    对File类的基本方法的理解 今天刚开始学了File类 一开始看思想编程看得迷迷糊糊的,之后受不了了,直接去看API文档 归纳: File->java.util File类的主要方法: 构造方法 ...

  8. [转载]Context and Interception : The .NET Context

    转载自:Context and Interception : The .NET Context Every new app domain starts with a single context, c ...

  9. 与锤子手机HR的对话——创业没有联合创始人,CTO 等高管会把它当做自己的事业吗?

    以下对话,是在被之前的锤子HR磨叽2周约面试折腾的火大的心态下进行…… 这个问题发到知乎,被一群人骂啊……cnblogs都是工程师,估计懂期权参加创业的同学多一些,有空前往知乎声援一下……在这里:ht ...

  10. display---我的第一篇博客

    display:block显示为块级元素,换行 display:inline-block显示为块级内联元素,不换行,但是可以改变其宽度高度 display:inline显示为内联元素,不换行但是也不能 ...