JSON (JavaScript Object Notation) 是一種輕量級的資料交換格式,易於人閱讀和編寫,同時也易於機器解析和產生,而且它是基於JavaScript 的。 JSON採用完全獨立於語言的文字格式設定,但是也使用了類似於C語言家族的習慣(包括C, C++, C#, Java, JavaScript 等)。這些特性使JSON成為理想的資料交換語言
JSON有兩種結構:
①“名/值”對的集合(A collection of name/value pairs)。在不同的語言中,它被理解為對象,結構,關聯陣列等
②值的有序列表(An ordered list of values)。在大部分語言中,它被理解為數組。
JSON資料有嚴格的格式,只有按照這個格式,才可以進行有效解析
JSON表示成對的名稱和數值:
{ "firstName": "Brett" }
多個成對的名稱和數值串在一起:
{ "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" }
從文法方面來看,這與成對的名稱和數值相比並沒有很大的優勢,但是在這種情況下 JSON
更容易使用,而且可讀性更好
當需要表示一組值時,JSON 不但能夠提高可讀性,而且可以減少複雜性:
{ “employees": [
{ "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" },
{ "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" },
{ "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" }
] }
Juqery解析JSON資料
例子一:
①建立.ashx檔案。
/// <summary>
/// $codebehindclassname$ 的摘要說明
/// </summary>
[WebService(Namespace = "http://www.bkjia.com")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class JsonHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
string data = "[{name:\"Tom\",age:\"26\"},{name:\"Jim\",age:\"27\"}]";
context.Response.Write(data);
}
public bool IsReusable
{
get
{
return false;
}
}
}
②前台解析JSON資料
<head runat="server">
<title></title>
<script src="js/jquery-1.3.2.js" type="text/javascript"></script>
<script type="text/javascript">
$(function() {
$.getJSON(
"JsonHandler.ashx",
function(data) {
$.each(data, function(i) {
$("#cat-list").append("<li>name:" + data[i].name + " Age:" + data
[i].age+ "</li>")
});
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<ul id="cat-list"></ul>
</div>
</form>
</body>
例子二:
①建立頁面處理後台,.aspx
public partial class AutoDB2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
StringBuilder str = new StringBuilder();
string strCon = @"Data Source=.\SQLEXPRESS;Initial
Catalog=TeacherFiles;User ID=sa;pwd=as";
SqlConnection con = new SqlConnection(strCon);
string sql = string.Format("select TeacherNum,TeacherName from
TeacherBasicInformation");
SqlDataAdapter sda = new SqlDataAdapter(sql, con);
DataTable dt = new DataTable();
sda.Fill(dt);
foreach (DataRow dr in dt.Rows)
{
str.AppendFormat
("{{name:\"{0}\",value:\"{1}\"}},", dr["TeacherName"], dr["TeacherNum"]);
}
Response.Write("[" + str.ToString().TrimEnd(',') + "]");
Response.End();
}
}
②前台解析JSON資料
<head runat="server">
<title></title>
<script type="text/javascript" src="js/jquery-1.3.2.js"></script>
<script type="text/javascript" src="js/jquery.autocomplete.js"></script>
<link rel="Stylesheet" href="css/jquery.autocomplete.css" type="text/css" />
<script type="text/javascript">
$(function() {
$.getJSON(
"AutoDB2.aspx", function(data) {
$("#txt").autocomplete(data, {
minChars: 0,
//cacheLength: 1,
//multiple: true,
matchContains: true,
autoFill: false,
mustMatch: true,
//delay: 100,
formatItem: function(row, i, max) {
return i + "/" + max + ": \"" + row.name + "\" [" + row.value + "]";
}
,
formatMatch: function(row, i, max) {
return row.name+" "+row.value;
}
,
formatResult: function(row) {
return row.name;
}
});
});
});
$(function() {
function findValueCallback(event, data, formatted) {
$("#content").html("<strong>" + (!data ? "無匹配項!" : "Selected: " + formatted)
+ "</strong>");
}
$("#txt").result(findValueCallback);
$("#btngetvalue").click(function() { $("#txt").search(); });
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
樣本:<input id="txt" runat="server" type="text" style="width: 50%;" />
<input id="btngetvalue" type="button" value="Get Value" /><br /><span id="content"></span>
</div>
</form>
</body>
摘自 徐越的專欄