我们需要理解什么是json数据
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)。在大部分语言中,它被理解为数组。
②值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组。
JSON数据有严格的格式,只有按照这个格式,才可以进行有效的解析
JSON表示名称/值对:
{ "firstName": "Brett" }
{ "firstName": "Brett" }
多个名称/值对串在一起:{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aa@qq.com
" }
从语法方面来看,这与名称/值对相比并没有很大的优势,但是在这种情况下 JSON更容易使用,而且可读性更好。
当需要表示一组值时,JSON 不但能够提高可读性,而且可以减少复杂性:
{ "employees": [
] }
asp.net使用json数据流程是什么呢?
1 aspx传值至cs
2 cs中处理aspx传来的值,一番处理之后,处理成json格式的值
3 传回aspx。aspx中可以通过拿到的处理后的数据。通过键值对的形式拿到值。
例子如下:
例一:
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
<script type="text/javascript">
$(document).ready(function(){
var o=
{
showcheck:false,
onnodeclick:function(item){
$.getJSON(
"../../Ajax/GetPoints.aspx",
{ID:item.value}, // 传值至后台,给后台处理。
function(json,status)
{
if(status=="success")
{
if(json==null)
{
alert("该部门没有卫生检查点!");
}
else
{
var content
="<table width=\"76%\" border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\">";
var ii=0;
$.each(json,function(i)
{
ii+=1;
if(ii % 5 == 1)
{
content+="<tr>";
}
content+="<td height=\"100%\" align=\"center\"><table><tr><td colspan=3>"
+json[i].PointName+"</td></tr>";
content+="<tr><td>红</td><td>黄</td><td>绿</td></tr></table></td>"
if(ii % 5== 0)
{
content+="</tr><tr>";
}
});
content+="</tr></table>";
$("#PointsContent").html(content);
}
}
else
{
alert("获取数据失败!");
}
}
)
}
}
o.data = treedata;
$("#tree").treeview(o);
});
</script>
GetPoints.cs
public partial class GetPoints : System.Web.UI.Page
{
BLL.MonitoringPoint bmp = new BLL.MonitoringPoint();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (Request.QueryString["ID"] != null &&
Request.QueryString["ID"].ToString() != string.Empty)
{
int intid = Convert.ToInt32(Request.QueryString["ID"].ToString());
List<Model.MonitoringPoint> list = bmp.GetModelList(string.Format("CompanyID = {0}", intid));
JavaScriptSerializer jss = new JavaScriptSerializer();
Response.Write(jss.Serialize(list));
Response.End();
}
}
}
}
我们看到JavaScriptSerializer 这个对象的Serialize这个方法,这个方法是做什么用的呢?
Model.MonitoringPoint 本身有PointName这个字段,Serialize这个方法方法处理,将数据对象处理成json格式的数据,其中有
[{"PointName":"卫生检查点1","city":"南京","location":"玄武区"}]........等等。那么通过
json[i].pointName的形式可以拿到里面的值。
我们当然可以使用$.ajax方法来拿到处理后的json数据了。
$.ajax({
type:"GET",
dataType:"json",
data:{id:json[i].ID},
async:false,
url:"../../Ajax/CalculateLamps.aspx",
success:function(data){
redlamp+=parseInt(data[0]["red"],10);
greenlamp+=parseInt(data[0]["green"],10);
yellowlamp+=parseInt(data[0]["yellow"],10);
}
});