惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
人人都是产品经理
人人都是产品经理
IT之家
IT之家
T
The Blog of Author Tim Ferriss
V
V2EX
博客园 - 聂微东
The Cloudflare Blog
Blog — PlanetScale
Blog — PlanetScale
A
About on SuperTechFans
U
Unit 42
Vercel News
Vercel News
L
LangChain Blog
博客园 - 司徒正美
H
Help Net Security
Recent Announcements
Recent Announcements
Recorded Future
Recorded Future
V
Visual Studio Blog
Jina AI
Jina AI
Microsoft Azure Blog
Microsoft Azure Blog
GbyAI
GbyAI
Y
Y Combinator Blog
C
Check Point Blog
博客园 - 三生石上(FineUI控件)
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
J
Java Code Geeks
The Register - Security
The Register - Security
The GitHub Blog
The GitHub Blog
B
Blog RSS Feed
F
Fortinet All Blogs
B
Blog
G
Google Developers Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
云风的 BLOG
云风的 BLOG
爱范儿
爱范儿
MongoDB | Blog
MongoDB | Blog
F
Full Disclosure
有赞技术团队
有赞技术团队
罗磊的独立博客
博客园_首页
MyScale Blog
MyScale Blog
aimingoo的专栏
aimingoo的专栏
Google DeepMind News
Google DeepMind News
M
MIT News - Artificial intelligence
N
Netflix TechBlog - Medium
Engineering at Meta
Engineering at Meta
量子位
I
InfoQ
小众软件
小众软件
P
Proofpoint News Feed

博客园 - RedSoft

需求分析——你好,我好,大家好! PHP问题列表(持续更新) [收藏]mysql 性能的检查和调优方法 【收藏】hibernate 集合映射inverse和cascade详解 个人网站开通。 【原】轻量级的数据交换格式——初识Json(上) 【原】初学Jquery 【原】初学Flex之简单图片查看器 【原】基于asp.net的Web开发架构探索 JavaScript使用技巧精萃 WinForm UI设计与开发思路(转) C#编程风格约定 C#常用正则表达式 将目录下的图片文件写成一个二进制大文件 写了个MVC/多层的Demo…… EnableViewState,与TextBOx控件状态改变的关系 文本框+层模拟下拉框,并实现输入自动提示和过滤 软件史上最伟大的十大程序员(图文) sql 常用语句积累
【原】轻量级的数据交换格式——初识Json(下)
RedSoft · 2009-08-24 · via 博客园 - RedSoft

其实第一次见到服务器端使用json是在用asp.net mvc做项目的时候,在asp.net mvc 1.0中Controller可以直接返回给视图一个json对象。但当时大部分时候是返回一个ViewData,对json没有使用过。

下面就介绍在.net环境下解析json的一个api——json.net。我们使用Json.net来实现JSON数据的序列化和反序列化。下载地址:http://www.newtonsoft.com/downloads/json/json.zip

以下实例介绍了一个与jquery结合实现的ajax调用服务器端解析的json,并显示到浏览器。

step 1、先建立一个数据库表的实体模型(往往在分层开发中经常这样做):

UserInfo.cs:

public class UserInfo
{
    private int _userid;
    private string _username;
    private string _password;

    /// <summary>
    /// 构造函数
    /// </summary>
10     public UserInfo()
11     {
12     }
13     /// <summary>
14     /// 赋值函数
15     /// </summary>
16     /// <param name="__userid">UserId</param>
17     /// <param name="__username">UserName</param>
18     /// <param name="__password">Password</param>
19     public UserInfo(int __userid, String __username, String __password)
20     {
21         _userid = __userid;
22         _username = __username;
23         _password = __password;
24     }
25     /// <summary>
26     /// UserId
27     /// </summary>
28     public int UserId
29     {
30         get
31         {
32             return _userid;
33         }
34         set
35         {
36             _userid = value;
37         }
38     }
39
40     /// <summary>
41     /// UserName
42     /// </summary>
43     public String UserName
44     {
45         get
46         {
47             return _username;
48         }
49         set
50         {
51             _username = value;
52         }
53     }
54
55     /// <summary>
56     /// Password
57     /// </summary>
58     public String Password
59     {
60         get
61         {
62             return _password;
63         }
64         set
65         {
66             _password = value;
67         }
68     }       
69 }

step 2、然后建立一个Handler.ashx,用于返回一个json格式的字符串

<%@ WebHandler Language="C#" Class="Handler" %>

using System;
using System.Web;
using Newtonsoft.Json;//引用json.net

public class Handler : IHttpHandler {
    
    public void ProcessRequest (HttpContext context) {
10         context.Response.ContentType = "text/plain";
11         UserInfo userInfo = new UserInfo(1,"liping","123");
12         string strJson = JavaScriptConvert.SerializeObject(userInfo);//将对象序列化为json格式的字符串
13         //UserInfo userByJson = (UserInfo)JavaScriptConvert.DeserializeObject(strJson, typeof(UserInfo));//通过这样将json格式字符串反序列化成对象
14         context.Response.Write(strJson);
15     }
16  
17     public bool IsReusable {
18         get {
19             return false;
20         }
21     }
22
23 }

访问效果:image

step 3、客服端使用ajax访问Handler.ashx:

javascript code:

<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
  <script type="text/javascript">
      $(document).ready(function() {
          $("#divclickajax").click(function() {
              $.getJSON("Handler.ashx", function(json) {
                  alert("JSON Data: userid:" + json.UserId + ",username:" + json.UserName + ",password:" + json.Password);
              });
          });
      })
10   </script>

dom code:

1 <div id="divclickajax">点击执行ajax请求</div>

最后效果

image

本文主要介绍了利用json.net对对象进行序列化(反序列化)的操作,从而为客服端提供合适的数据格式,最后通过ajax访问得到结果。关于json.net的更多信息可以参见官方网站:http://james.newtonking.com/projects/json-net.aspx

另:有哪位哥们能告诉我live writer上怎样可以让代码折叠起来?