C# 使用 System.Web.Script.Serialization 解析 JSON
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对象
示例代码:
- JavaScriptSerializer json = new JavaScriptSerializer();
- // 反序列化JSON字符串到对象
- User user = json.Deserialize<User>(jsonString);
- // 序列化对象为JSON字符串
- 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 (转)
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programming Langu ...
- 参考C# 使用 System.Web.Script.Serialization 解析 JSON
参考C# 使用 System.Web.Script.Serialization 解析 JSON 使用json需要引用到System.Web.Script.Serialization.习惯在解决方案右键 ...
- csharp: using using System.Web.Script.Serialization read json
using System; using System.Data; using System.Configuration; using System.Collections; using System. ...
- 在.net2.0下使用System.Web.Script.Serialization;
最近,在弄json字符串转为对象.需要添加这个引用System.Web.Script.Serialization;因为版本必须是dotnet2.0的原因,发现很多解决方案不适合自己.故使用这种解决办法 ...
- using System.Web.Script.Serialization
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programming Langu ...
- System.Web.Script.Serialization引用找不到的问题
之前在项目中要使用JavascriptSerializer这个类,需要引入System.Web.Script.Serialization命名空间,但是在添加引用中找不到这个命名空间,后来才得知Syst ...
- System.Web.Script.Serialization的引用
解决方案: 找到C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0 ==>System.Web.Extensions.d ...
- The type or namespace name 'Script' does not exist in the namespace 'System.Web' (are you missing an assembly reference?)
应该说是 .net4 的bug,没有所谓的 System.Web.Extensions.dll 库文件,需要将项目的 Target Framework修改为 3.5版本,才能加载System.Web. ...
- C# 解析JSON的几种办法
欲成为海洋大师,必知晓海中每一滴水的真名. 刚开始只是想找一个转换JSON数组的方法,结果在MSDN翻到一大把. 搜索过程中免不了碰到一大堆名词:WCF => DataContract => ...
随机推荐
- Fragment使用--文章集锦
android使用Fragment实现底部菜单使用show()和hide()来切换以保持Fragment状态 Android Fragment 真正的完全解析(上) Android Fragment实 ...
- 一维和二维ST模板
void init(){ ; i < n; i++) st[i][] = a[i]; ; ( << j) <= n; j++){ ; i + ( << j) - & ...
- 【洛谷 P2515】 [HAOI2010]软件安装 (缩点+树形背包)
题目链接 看到代价和价值这两个关键词,肯定是首先要想到背包的. 但是图中并没有说这是棵树,所以先要\(Tarjan\)缩点,然后就是选课了,跑一遍树形背包就好了. 注意:缩点后应该是一个森林,应该用一 ...
- phpcms v9 后台添加修改页面空白页问题解决方法
phpcms v9 添加修改页面空白页的解决方法 找一个正常运行的phpcms 将caches\caches_model\caches_data 目录下的 content_form.class.php ...
- 生成器版本的文件MD5校验
生成器是一个可迭代的对象,可以对可迭代的对象进行便利,比如字符串.列表等,都是可迭代对象 def f(n): for i in range(n): yield i 特点: 1.当调用这个函数的 ...
- [Leetcode Week4]Merge Two Sorted Lists
Merge Two Sorted Lists题解 原创文章,拒绝转载 题目来源:https://leetcode.com/problems/merge-two-sorted-lists/descrip ...
- windows使用celery遇到的错误
https://www.jianshu.com/p/e5539d96641c 按照这个教程一步步执行到最后报错了. 运行task_dispatcher.py的时候 ValueError: not en ...
- jQuery鼠标悬停文字渐隐渐现动画效果
jQuery鼠标悬停文字渐隐渐现动画效果 当时是做项目的时候用到的所以图片有些大,九张,真正要做图片不需要这么大 css样式 <style> *{ margin: 0; padding: ...
- HTML布局相关的CSS样式属性
# 转载请留言联系 注意,样式属性是写进CSS里面的. 布局常用样式属性: width 设置元素(标签)的宽度,如:width:100px; height 设置元素(标签)的高度,如:height:2 ...
- Scanner类的个人分析
Scanner类读取键盘输入(java中Scanner类nextLine()和next()的区别和使用方法&&java 中的Scanner(非常详细不看后悔)): 2017/3/18 ...