JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯。这些特性使JSON成为理想的数据交换语言。

JSON建构于两种结构

1、“名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表 (hash table),有键列表(keyed list),或者关联数组 (associative array)。
     示例:{"UserID":11, "Name":"Froog"};

2、值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。
如:
    示例:var Users=[{"userID":"1","Name":"Froog","friends":["Jack","Zack","Justin"]},
             {"userID":"2","Name":"Zack","friends":["Jack","Zack","Justin"]},
             {"userID":"3","Name":"Justin","friends":["Jack","Zack","Justin"]}

这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交号)分隔。

JSON具有以下这些形式
     对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。 
     数组是 值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔值(value)可以是双引号括 起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。 
     字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。
NET中通过JavaScriptSerializer类操作JSON对象
示例代码:

  1. JavaScriptSerializer json = new JavaScriptSerializer();
  2. // 反序列化JSON字符串到对象
  3. User user = json.Deserialize<User>(jsonString);
  4. // 序列化对象为JSON字符串
  5. string jsonString = json.Serialize(user);

JavaScriptSerializer 成员信息:http://msdn.microsoft.com/zh-cn/library /system.web.script.serialization.javascriptserializer_members.aspx

AJAX 中使用JSON

示例代码:

function getResult()
{
  $.ajax({
  type: "POST",
  url: "?Json=true",
  data:"UserInfo="+obj.toJSONString(),
  success: function(msg){var obj = msg.parseJSON();
    alert( "Name: " + obj.Name +",User:"+obj.User );
  }
});

完整示例代码

Default.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="JsonWeb._Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
<script src="http://www.json.org/json.js" type="text/javascript"></script>
<script src="http://code.jquery.com/jquery.js" type="text/javascript"></script>
<script type="text/javascript">
// "名称/值"对的集合
var User={"userID":"1","Name":"Froog","friends":["Jack","Zack","Justin"]}
alert(User.Name);alert(User.friends[0]); // 值的有序列表
var Users=[{"userID":"1","Name":"Froog","friends":["Jack","Zack","Justin"]},
{"userID":"2","Name":"Zack","friends":["Jack","Zack","Justin"]},
{"userID":"3","Name":"Justin","friends":["Jack","Zack","Justin"]}
]
alert(Users[2].Name);alert(Users[2].friends.length);
alert(escape()); // 转换JSON字符到Object
var JsonString = '{"userID":"2","Name":"Froog","friends":["Jack","Zack","Justin"]}';
var User2 = eval('(' + JsonString + ')');
alert(User2.Name);alert(User2.friends[0]); //引用 json.js 实现JSON字符与Object相互转换。
var obj = JsonString.parseJSON();
alert(obj.toJSONString()); //AJAX 中使用JSON
function getResult()
{
$.ajax({
type: "POST",
url: "?Json=true",
data:"UserInfo="+obj.toJSONString(),
success: function(msg){
var obj = msg.parseJSON();
alert( "Name: " + obj.Name +",User:"+obj.User );
}
});
// requestHeaders: {Accept: 'application/json'} /**/,
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input type="button" value="AJAX" onclick="getResult()" />
</div>
</form>
</body>
</html>

Default.aspx.cs

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Web.Script.Serialization;
namespace JsonWeb
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Request.QueryString["Json"] != null)
{
// AJAX 异步调用处理程序
string UserInfo = Request.Form["UserInfo"] ?? string.Empty;
JavaScriptSerializer json = new JavaScriptSerializer();
Product product = new Product() { Name = "Computer " };
if (!string.IsNullOrEmpty(UserInfo))
{
// 反序列化
User user = json.Deserialize<User>(UserInfo);
product.User = user.Name;
}
else
{
product.User = "Unknow";
}
// 序列化
string jsonString = json.Serialize(product);
// 输出异步处理结果
Response.ContentType = "application/json";
Response.Write(jsonString);
Response.End();
}
}
}
[Serializable]
public class Product
{
public string Name;
public string User;
}
public class User
{
public string Name { get; set; }
}
}

转载:征服自己,征服世界       参考C# 使用 System.Web.Script.Serialization 解析 JSON (转)

 

ASP.NET 使用 System.Web.Script.Serialization 解析 JSON (转)的更多相关文章

  1. 参考C# 使用 System.Web.Script.Serialization 解析 JSON

    参考C# 使用 System.Web.Script.Serialization 解析 JSON 使用json需要引用到System.Web.Script.Serialization.习惯在解决方案右键 ...

  2. C# 使用 System.Web.Script.Serialization 解析 JSON

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programming Langu ...

  3. csharp: using using System.Web.Script.Serialization read json

    using System; using System.Data; using System.Configuration; using System.Collections; using System. ...

  4. 在.net2.0下使用System.Web.Script.Serialization;

    最近,在弄json字符串转为对象.需要添加这个引用System.Web.Script.Serialization;因为版本必须是dotnet2.0的原因,发现很多解决方案不适合自己.故使用这种解决办法 ...

  5. using System.Web.Script.Serialization

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programming Langu ...

  6. System.Web.Script.Serialization引用找不到的问题

    之前在项目中要使用JavascriptSerializer这个类,需要引入System.Web.Script.Serialization命名空间,但是在添加引用中找不到这个命名空间,后来才得知Syst ...

  7. System.Web.Script.Serialization的引用

    解决方案: 找到C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0 ==>System.Web.Extensions.d ...

  8. 无法将类型“ASP.login_aspx”转换为“System.Web.UI.WebControls.Login”

    今天碰上了一个很傻的问题,起码我认为是这样. 项目中首页名是:Login.aspx,编译.运行都没有出现问题. 于是打包发布网站,各项内容都配置好后,问题出现了.一运行首页面就出现下面这个错误: 编译 ...

  9. asp.net MVC3 “System.Web.Mvc.ModelClientValidationRule”问题

    错误提示: Error 1 The type 'System.Web.Mvc.ModelClientValidationRule' exists in both 'c:\Program Files ( ...

随机推荐

  1. codechef Jewels and Stones 题解

    Soma is a fashionable girl. She absolutely loves shiny stones that she can put on as jewellery acces ...

  2. HttpResponse类

    HttpReponse是服务器接收到浏览器的请求后,处理返回结果常用的一个类. 一.属性 Buffer 获取或设置一个值,该值指示是否缓冲输出并在处理完整个响应之后发送它. BufferOutput ...

  3. printf打印

    printf 打印变量(整型,浮点型,双精度型,字符型,字符串类型) 整型: printf("%d",a); 打印出整形变量a 浮点型:printf("%f", ...

  4. openlayers3 在地图上叠加WFS查询矢量图层

    随着终端设备计算能力的加强,用户在使用地图的时候也须要越来越多的交互效果. 比方如今非常火的室内导航,为了获得好的用户体验,就须要当用户单击某一商店的时候该商店的颜色能对应的变化.这就须要叠加矢量图层 ...

  5. 如何在XAF中显示自定义窗体和控件

    https://www.devexpress.com/Support/Center/Example/Details/E911

  6. RotateAnimation详解

    其他构造器的旋转也可参考这副图. RotateAnimation旋转坐标系为以旋转点为坐标系(0,0)点.x轴为0度,顺时针方向旋转一定的角度.        1.RotateAnimation(fr ...

  7. javascript代码解释执行过程

    javascript是由浏览器解释执行的脚本语言,不同于java c,需要先编译后运行,javascript 由浏览器js解释器进行解释执行,总的过程分为两大块,预编译期和执行期 下面的几个demo解 ...

  8. Java IO和Java NIO在文件拷贝上的性能差异分析

    1.  在JAVA传统的IO系统中,读取磁盘文件数据的过程如下: 以FileInputStream类为例,该类有一个read(byte b[])方法,byte b[]是我们要存储读取到用户空间的缓冲区 ...

  9. 在window平台搭建Qt开发环境(使用VS2008 IDE)

    一直用QT Creator(mingw)开发Qt应用程序,每次如果需要修改编译链接参数选项时,都要修改pro文件,而这个文件是基于文本的,每次都要记住这些选项参数名,如果在知道原理的情况下还记住这些字 ...

  10. Android 之 权限 uses-permission 设置

    Manifest.permission 官方API说明: http://developer.android.com/reference/android/Manifest.permission.html ...