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

示例代码:

  1. function getResult()
  2. {
  3. $.ajax({
  4. type: "POST",
  5. url: "?Json=true",
  6. data:"UserInfo="+obj.toJSONString(),
  7. success: function(msg){
  8. var obj = msg.parseJSON();
  9. alert( "Name: " + obj.Name +",User:"+obj.User );
  10. }
  11. });


完整示例代码

Default.aspx

  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs"Inherits="JsonWeb._Default" %>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" >
  4. <head runat="server">
  5. <title>Untitled Page</title>
  6. <script src="http://www.json.org/json.js" type="text/javascript"></script>
  7. <script src="http://code.jquery.com/jquery.js" type="text/javascript"></script>
  8. <script type="text/javascript">
  9. // "名称/值"对的集合
  10. var User={"userID":"1","Name":"Froog","friends":["Jack","Zack","Justin"]}
  11. alert(User.Name);alert(User.friends[0]);
  12. // 值的有序列表
  13. var Users=[{"userID":"1","Name":"Froog","friends":["Jack","Zack","Justin"]},
  14. {"userID":"2","Name":"Zack","friends":["Jack","Zack","Justin"]},
  15. {"userID":"3","Name":"Justin","friends":["Jack","Zack","Justin"]}
  16. ]
  17. alert(Users[2].Name);alert(Users[2].friends.length);
  18. alert(escape());
  19. // 转换JSON字符到Object
  20. var JsonString = '{"userID":"2","Name":"Froog","friends":["Jack","Zack","Justin"]}';
  21. var User2 = eval('(' + JsonString + ')');
  22. alert(User2.Name);alert(User2.friends[0]);
  23. //引用 json.js 实现JSON字符与Object相互转换。
  24. var obj = JsonString.parseJSON();
  25. alert(obj.toJSONString());
  26. //AJAX 中使用JSON
  27. function getResult()
  28. {
  29. $.ajax({
  30. type: "POST",
  31. url: "?Json=true",
  32. data:"UserInfo="+obj.toJSONString(),
  33. success: function(msg){
  34. var obj = msg.parseJSON();
  35. alert( "Name: " + obj.Name +",User:"+obj.User );
  36. }
  37. });
  38. //   requestHeaders: {Accept: 'application/json'} /**/,
  39. }
  40. </script>
  41. </head>
  42. <body>
  43. <form id="form1" runat="server">
  44. <div>
  45. <input type="button" value="AJAX" onclick="getResult()" />
  46. </div>
  47. </form>
  48. </body>
  49. </html>

Default.aspx.cs

    1. using System;
    2. using System.Collections;
    3. using System.Configuration;
    4. using System.Data;
    5. using System.Linq;
    6. using System.Web;
    7. using System.Web.Security;
    8. using System.Web.UI;
    9. using System.Web.UI.HtmlControls;
    10. using System.Web.UI.WebControls;
    11. using System.Web.UI.WebControls.WebParts;
    12. using System.Xml.Linq;
    13. using System.Web.Script.Serialization;
    14. namespace JsonWeb
    15. {
    16. public partial class _Default : System.Web.UI.Page
    17. {
    18. protected void Page_Load(object sender, EventArgs e)
    19. {
    20. if (Request.QueryString["Json"] != null)
    21. {
    22. // AJAX 异步调用处理程序
    23. string UserInfo = Request.Form["UserInfo"] ?? string.Empty;
    24. JavaScriptSerializer json = new JavaScriptSerializer();
    25. Product product = new Product() { Name = "Computer " };
    26. if (!string.IsNullOrEmpty(UserInfo))
    27. {
    28. // 反序列化
    29. User user = json.Deserialize<User>(UserInfo);
    30. product.User = user.Name;
    31. }
    32. else
    33. {
    34. product.User = "Unknow";
    35. }
    36. // 序列化
    37. string jsonString = json.Serialize(product);
    38. // 输出异步处理结果
    39. Response.ContentType = "application/json";
    40. Response.Write(jsonString);
    41. Response.End();
    42. }
    43. }
    44. }
    45. [Serializable]
    46. public class Product
    47. {
    48. public string Name;
    49. public string User;
    50. }
    51. public class User
    52. {
    53. public string Name { get; set; }
    54. }
    55. }

C# 使用 System.Web.Script.Serialization 解析 JSON的更多相关文章

  1. ASP.NET 使用 System.Web.Script.Serialization 解析 JSON (转)

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

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

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

  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. 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. ...

  9. C# 解析JSON的几种办法

    欲成为海洋大师,必知晓海中每一滴水的真名. 刚开始只是想找一个转换JSON数组的方法,结果在MSDN翻到一大把. 搜索过程中免不了碰到一大堆名词:WCF => DataContract => ...

随机推荐

  1. 设计模式功能概述(Design Patterns)

    1.Abstract Factory:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 2.Adapter:将一个类的接口转换成客户希望的另一个接口.Adapter模式使得原本由于 ...

  2. Sass、Ruby、Nodejs、gulp

    1.Sass文件就是普通的文本文件,不过其文件后缀名有两种,一种为“.sass”:另一种为“.scss”.我们一般用“.scss”就好,至于这两种文件扩展名的区别在于“.sass”是Sass语言文件的 ...

  3. Codeforces Round #301 解题报告

    感觉这次的题目顺序很不合理啊... A. Combination Lock   Scrooge McDuck keeps his most treasured savings in a home sa ...

  4. 【洛谷 P1667】 数列 (贪心)

    题目链接 对于一个区间\([x,y]\),设这个区间的总和为\(S\) 那么我们在前缀和(设为\(sum[i]\))的意义上考虑到原操作其实就是\(sum[x−1]+=S\) , \(sum[x]+S ...

  5. hdu 2141 Can you find it?(二分查找)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2141 题目大意:查找是否又满足条件的x值. 这里简单介绍一个小算法,二分查找. /* x^2+6*x- ...

  6. 【bzoj2242】计算器

    #include<bits/stdc++.h> #define inf 1000000000 using namespace std; typedef long long ll; ?a:g ...

  7. Spring容器整合WebSocket

    原链接:http://blog.csdn.net/canot/article/details/52575054 WebSocker是一个保持web客户端与服务器长链接的技术.这样在两者通信过程中如果服 ...

  8. GenericAPIView类与几个扩展类的综合使用

    五个扩展类 扩展类 作用 封装的方法 状态码(成功,失败) ListModelMixin 查询多条数据 list 200 CreateModelMixin 新增一条数据 create 201,400 ...

  9. poj 3608(旋转卡壳求解两凸包之间的最短距离)

    Bridge Across Islands Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9768   Accepted: ...

  10. jQuery 立即执行

    ;(function($){// 可以去掉开头的 ; (分号),国外的开发人员编写的插件时的一种习惯 $.fn.pluginName = function() { // Our plugin impl ...