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. 我自己的python开发环境

    1.开发工具 eclipse 所有的版本下载: https://www.eclipse.org/downloads/index-packages.php , 我下载的是比较低的版本:https://w ...

  2. 常用原生客户端js

    var el = document.createElement('pre'); // 创建 <pre></pre>元素 el.id = 'sss'; // 添加id <p ...

  3. IDEA新建时选项没有java class问题

    解决办法: 点击你的project F4打开project stucture 点击左边的module 点击右边的source后添加src就可以了  添加的src就是源码可以放置的地址

  4. [bzoj3226][Sdoi2008]校门外的区间——线段树

    题目 略 题解 直接套黄学长模板. Orz 代码 #include <bits/stdc++.h> using namespace std; #define ll long long #d ...

  5. hdu 1686 Oulipo (kmp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1686 题目大意:寻找子链在母链中出现的次数. #include <iostream> #i ...

  6. kickstart构建Live CD 添加文件问题

    在构建自定义ISO的时候,有时候需要从母体机器拷贝文件到Live CD系统.比如拷贝/home/xiaoxiaoleo/hello 程序,在Kickstart配置文件里, post脚本添加--noch ...

  7. Python与金融分析基础

    一 .ipython的简单使用 IPython:交互式的Python命令行 丰富的快捷键 TAB键自动完成 ?:内省.命名空间搜索 !:执行系统命令 魔术命令:以%开始的命令 %run:执行文件代码 ...

  8. Swift 学习之二十一:?和 !(详解)

    http://blog.csdn.net/woaifen3344/article/details/30244201 Swift语言使用var定义变量,但和别的语言不同,Swift里不会自动给变量赋初始 ...

  9. POJ1019 Number Sequence

    Number Sequence Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 36256   Accepted: 10461 ...

  10. IPython Notebook error: Error loading notebook

    打开jupyter突然报错: An unknown error occurred while loading this notebook. This version can load notebook ...