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. Git菜鸟

    1.git 和svn的差异 git和svn 最大的差异在于git是分布式的管理方式而svn是集中式的管理方式.如果不习惯用代码管理工具,可能比较难理解分布式管理和集中式管理的概念.下面介绍两种工具的工 ...

  2. 【洛谷 P3469】[POI2008]BLO-Blockade(割点)

    题目链接 题意:一个无向联通图,求删去每个点及其所有边后有多少有序点对的连通性发生了变化. Tarjan求割点的例题.. 如果当前点不是割点,那么它对整个图的连通性不产生影响,只有自己与其他\(n-1 ...

  3. mobius反演讲解

    mobius反演的基本形式为,假设知道函数F(x)=Σf(d) d|x,那么我们可以推出f(x)=Σmiu(d)*F(x/d) d|x,另一基本形式为假设知道函数F(x)=Σf(d) x|d,那么我们 ...

  4. windows注册表存储位置

    win7/8/10 通常情况: HKEY_LOCAL_MACHINE \SYSTEM : \system32\config\system HKEY_LOCAL_MACHINE \SAM : \syst ...

  5. python基础之函数(自定义函数)

    函数: 函数的定义: 初中数学函数定义:一般的,在一个变化过程中,如果有两个变量x和y,并且对于x的每一个确定的值,y都有唯一确定的值与其对应,那么我们就把x称为自变量,把y称为因变量,y是x的函数. ...

  6. PHP性能追踪及分析工具xhprof的安装与使用

    对于本地开发环境来说,进行性能分析xdebug是够用了,但如果是线上环境的话,xdebug消耗较大,配置也不够灵活,因此线上环境建议使用xhprof进行PHP性能追踪及分析. 我们今天就简单介绍一下x ...

  7. maven中的pom.xml解析

    pom.xml用于项目描述,组织管理,依赖管理和构件信息的管理. <project>是pom.xml的一些约束信息: <modelVersion>指定了当前pom的版本: 坐标 ...

  8. SSM+Maven的JavaWeb项目中的异常的可能性

    1.404 可能:1):被拦截了,即:springmvc中的controller可能不存在,可能没有被配置,可能配置出错 2):资源确实不存在 3):路径出错 2.500,程序异常,但是业务逻辑什么都 ...

  9. BigDecimal常用操作

    import java.math.BigDecimal; public class BigDecimalUtil { /** * 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精 ...

  10. Newtonsoft.Json 序列化和反序列化 以及时间格式 2

    一.JSON使用JsonPropertyAttribute重命名属性名 1.先创建一个Movie对象,然后在其属性上添加JsonProperty,并指定重命名的名称.注意:属性Name和Directo ...