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对象
示例代码:

  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.          // 值的有序列表
  14.          var Users=[{"userID":"1","Name":"Froog","friends":["Jack","Zack","Justin"]},
  15.          {"userID":"2","Name":"Zack","friends":["Jack","Zack","Justin"]},
  16.          {"userID":"3","Name":"Justin","friends":["Jack","Zack","Justin"]}
  17.                      ]
  18.          alert(Users[2].Name);alert(Users[2].friends.length);
  19.          alert(escape());
  20.         
  21.          // 转换JSON字符到Object
  22.          var JsonString = '{"userID":"2","Name":"Froog","friends":["Jack","Zack","Justin"]}';   
  23.          var User2 = eval('(' + JsonString + ')');
  24.          alert(User2.Name);alert(User2.friends[0]);
  25.         
  26.          //引用 json.js 实现JSON字符与Object相互转换。
  27.          var obj = JsonString.parseJSON();   
  28.          alert(obj.toJSONString());  
  29.         
  30.           //AJAX 中使用JSON   
  31.           function getResult()
  32.           {
  33.                  $.ajax({
  34.            type: "POST",
  35.            url: "?Json=true",
  36.            data:"UserInfo="+obj.toJSONString(),
  37.            success: function(msg){
  38.                                  var obj = msg.parseJSON();
  39.                                  alert( "Name: " + obj.Name +",User:"+obj.User );
  40.                                   }
  41.          });
  42.      //   requestHeaders: {Accept: 'application/json'} /**/,
  43.                       }
  44. </script>
  45. </head>
  46. <body>
  47.     <form id="form1" runat="server">
  48.     <div>
  49.     <input type="button" value="AJAX" onclick="getResult()" />
  50.     </div>
  51.     </form>
  52. </body>
  53. </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 { getset; }
  54.      }
  55. }
分类:  ASP.NET

本文转自左正博客园博客,原文链接:http://www.cnblogs.com/soundcode/p/3317424.html ,如需转载请自行联系原作者
相关文章
|
4月前
|
JSON 缓存 自然语言处理
多语言实时数据微店商品详情API:技术实现与JSON数据解析指南
通过以上技术实现与解析指南,开发者可高效构建支持多语言的实时商品详情系统,满足全球化电商场景需求。
|
6月前
|
存储 JSON 关系型数据库
【干货满满】解密 API 数据解析:从 JSON 到数据库存储的完整流程
本文详解电商API开发中JSON数据解析与数据库存储的全流程,涵盖数据提取、清洗、转换及优化策略,结合Python实战代码与主流数据库方案,助开发者构建高效、可靠的数据处理管道。
|
5月前
|
JSON 算法 API
淘宝商品评论API接口核心解析,json数据返回
淘宝商品评论API是淘宝开放平台提供的数据服务接口,允许开发者通过编程方式获取指定商品的用户评价数据,包括文字、图片、视频评论及评分等。其核心价值在于:
|
3月前
|
JSON Java Go
【GoGin】(2)数据解析和绑定:结构体分析,包括JSON解析、form解析、URL解析,区分绑定的Bind方法
bind或bindXXX函数(后文中我们统一都叫bind函数)的作用就是将,以方便后续业务逻辑的处理。
291 3
|
3月前
|
XML JSON 数据处理
超越JSON:Python结构化数据处理模块全解析
本文深入解析Python中12个核心数据处理模块,涵盖csv、pandas、pickle、shelve、struct、configparser、xml、numpy、array、sqlite3和msgpack,覆盖表格处理、序列化、配置管理、科学计算等六大场景,结合真实案例与决策树,助你高效应对各类数据挑战。(238字)
230 0
|
7月前
|
JSON 定位技术 PHP
PHP技巧:解析JSON及提取数据
这就是在PHP世界里探索JSON数据的艺术。这场狩猎不仅仅是为了获得数据,而是一种透彻理解数据结构的行动,让数据在你的编码海洋中畅游。通过这次冒险,你已经掌握了打开数据宝箱的钥匙。紧握它,让你在编程世界中随心所欲地航行。
240 67
|
4月前
|
JSON 自然语言处理 API
多语言实时数据淘宝商品评论API:技术实现与JSON数据解析指南
淘宝商品评论多语言实时采集需结合官方API与后处理技术实现。建议优先通过地域站点适配获取本地化评论,辅以机器翻译完成多语言转换。在合规前提下,企业可构建多语言评论数据库,支撑全球化市场分析与产品优化。
|
8月前
|
存储 算法 安全
JWT深度解析:现代Web身份验证的通行证为什么现在都是JWT为什么要restful-优雅草卓伊凡
JWT深度解析:现代Web身份验证的通行证为什么现在都是JWT为什么要restful-优雅草卓伊凡
419 41
JWT深度解析:现代Web身份验证的通行证为什么现在都是JWT为什么要restful-优雅草卓伊凡
|
10月前
|
数据采集 JSON 数据可视化
JSON数据解析实战:从嵌套结构到结构化表格
在信息爆炸的时代,从杂乱数据中提取精准知识图谱是数据侦探的挑战。本文以Google Scholar为例,解析嵌套JSON数据,提取文献信息并转换为结构化表格,通过Graphviz制作技术关系图谱,揭示文献间的隐秘联系。代码涵盖代理IP、请求头设置、JSON解析及可视化,提供完整实战案例。
600 4
JSON数据解析实战:从嵌套结构到结构化表格
|
12月前
|
JSON 小程序 UED
微信小程序 app.json 配置文件解析与应用
本文介绍了微信小程序中 `app.json` 配置文件的详细
1733 12

推荐镜像

更多
  • DNS