之前剛接觸JSON上網上搜資料發現都是講到寫出就完了,然後就沒了,我就開始郁悶了,JSON數據如何和前台交互,一下是本人實戰經歷:
JSON簡單介紹:
JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式.
簡單 JSON 示例
按照最簡單的形式,可以用下面這樣的 JSON 表示名稱 / 值對:
{ "firstName": "Brett" }
本人使用的是Newtonsoft.JSon類庫。
後台代碼:
public static class JSonHelper<T, K>
{
/// <summary>
/// 序列化
/// </summary>
/// <param name="t"></param>
/// <returns></returns>
public static string JSonWriter(T t)
{
return JSonConvert.SerializeObject(t,new IsoDateTimeConverter());
}
/// <summary>
/// 反序列化
/// </summary>
/// <param name="serialize"></param>
/// <returns></returns>
public static T JSonReader(string serialize)
{
return JSonConvert.DeserializeObject<T>(serialize);
}
/// <summary>
/// 將DataTable轉化成JSON格式
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
public static string JSonDataTable(DataTable dt)
{
StringBuilder JSonBuilder = new StringBuilder();
JSonBuilder.Append("{\"");
JSonBuilder.Append(dt.TableName.ToString());
JSonBuilder.Append("\":[");
for (int i = 0; i < dt.Rows.Count; i++)
{
JSonBuilder.Append("{");
for (int j = 0; j < dt.Columns.Count; j++)
{
JSonBuilder.Append("\"");
JSonBuilder.Append(dt.Columns[j].ColumnName);
JSonBuilder.Append("\":\"");
JSonBuilder.Append(dt.Rows[i][j].ToString());
JSonBuilder.Append("\",");
}
jsonBuilder.Remove(JSonBuilder.Length - 1, 1);
JSonBuilder.Append("},");
}
jsonBuilder.Remove(JSonBuilder.Length - 1, 1);
JSonBuilder.Append("]");
JSonBuilder.Append("}");
return JSonBuilder.ToString();
}
}
一般應用程序:
public void ProcessRequest(HttpContext context)
{
string get = context.Request.QueryString["p"].ToString();
if (null != get)
{
context.Response.Write(List(int.Parse(get)));
context.Response.ContentType = "json/json";//設置寫出的是JSON格式文件
}
}
public bool IsReusable
{
get
{
return false;
}
}
private string List(int id)
{
C_USER us = new C_USERService().GetById(id);
string js =JsonHelper<C_USER, int>.JSonWriter(us);
return JS;
}
頁面調用:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="index.ASPx.cs" Inherits="index" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHtml 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xHtml1-transitional.dtd">
<Html XMLns="http://www.w3.org/1999/xHtml">
<head runat="server">
<title>JSon測試</title>
<script language="Javascript" type="text/Javascript" src="script/jquery-1.4.2.min.JS"></script>
<script language="Javascript" type="text/Javascript">
$(document).ready(function(){
$.AJax({
url:"Handler.ashx?p=1",
//dataType:"JSon",
type:"GET",
success:function(JSon)
{
alert(JSon.NAME);
}
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
</form>
</body>
</Html>
結束:
在學習的過程中問題的一些總結:
1、用Newtonsoft.Json類庫3.5的版本的時候運行出異常System.Runtime..........的異常,問題是安裝的Framework3.5版本是sp1.0的不存在那個方法,建議升級下或者用Newtonsoft.JSon類庫2.0版本
2、當json文件寫出後一直沒發用,解決方法:在一般應用程序裡+ context.Response.ContentType = "json/json";//設置寫出的是JSON格式文件或者在AJax那裡+ dataType:"json",告訴計算機寫出的是JSon格式。