Json数据使用及学习方法
以前对json的了解并不是很清楚,因为使用很少,所以也没有特意的研究。只知道json是轻量级的数据交换格式,可以被多种语言方便的处理,也是大型门户站接口使用的主要数据格式。
而最近做了个项目,涉及到json数据的操作。发现json其实挺简单。
本文是自己在开发过程中对json的理解及使用,有错误的地方,也请大家多多指正。
在学习处理json数据之前,需要对js中的数组和静态对象的定义了解一下。
js中数组的定义
//定义1维数组,包含三个元素
var arr = new Array(“1″, “2″, “3″);
//或
var arr2 = ["1","2","3"]; //以[]定义数组
//取值时
arr[0],arr[1],arr[2] //”1″,”2″,”3″ 对应的值.
//js的数组比较特殊,数组中的元素可以包含各种类型的元素。
如var arr3 = [["1","2","3"],”zhangsan”,2]; //arr3[0] 是数组,arr3[1]是字符型 arr3[2]是整形
类似于c#中
var arr = new object[3] {new object[3]{“1″,”2″,”3″}, “zhangsan”,2};
//我们可以很容易的使用js这种特性来定义数据类型。如下
var arr4 = [["zhangsan",18,"男"],["lisi",20,"男"],["wangwu",22,"女"]]; //二维数组
//如果需要使用数组中的元素,可以使用数组的下标。访问也很方便。
arr4[0][0]; //zhangsan arr4[1][0] //lisi
但是只能使用下标访问。如果数据嵌套的太多,就涉及到多维数据,理解起来会非常的麻烦。
js中静态对象的定义
{
id: "1", //换成"id"也是一样的
name: "zhangsan",
ShowName: function () {
console.log(PeopleInfo.name);
}
};
定义了一个静态对象PeopleInfo,包括属性值id,name,方法ShowName。
我们在使用时
访问属性:PeopleInfo.id,PeopleInfo.name
访问方法:PeopleInfo.ShowName()
类似于c# 中的静态类。
到这里js中的数组和静态对象讲完了。下面就开始本文的重点json
json是一种对象,也是一种数据格式,json的格式如下
1.基本格式
这是最简单的一种格式,访问时,我们可以
json1["id"] //1 ,不可以使用下标访问 json1[0] 错误,因为不是数组
json1.name //zhangsan
2.嵌套格式
"id": 1,
"name": "zhangsan",
"address": { "address1": "地址1", "address2": "地址2" }
};
这种定义是json(数据格式或对象)里面嵌套一个json(数据格式或对象),当然可以嵌套多个,这里只是举一个例子。我们在访问时 可以
json2["id"] //1
json2.address.address1 //地址1
json2.address["address1"] //地址1
3.数据嵌套格式
"id": 1,
"name": "zhangsan",
"address": [{ "address1": "地址1"}, {"address2": "地址2" }]
};
这种定义是json里包含一个数组,而数组里又包含两个json。访问为嵌套的元素时,与上述说明相同,访问嵌套元素时可以
json3.address[0].address1 //地址1
json3.address[0]["address1"] //地址2
我们在访问json格式的数据时,只需要记住,如果是数组要用下标,如果是对象,可以用变量名也可以用属性。
我们所遇到的json数据,无非是上述三种。可能会更复杂一下。如下:
"person1": {
"id": 1,
"name": "zhangsan",
"address": { "address1": "北京1", "address2": "北京2"}
},
"person2": {
"id": 2,
"name": "lisi",
"address": { "address1": "上海1", "address2": "上海2" }
}
};
但是只要明白数组和对象的定义,分析起来也很容易,无非就是数据格式之间的嵌套。
对象JsonObject包含两个对象person1,person2,person1与person2的结构相同,并分别包括两个变量id,name和一个address对象。访问时,只需按层次访问就可以。例如
JsonObject["person1"]["address"]["address1"] //北京1
如果需要遍历,遍历json数据格式的方式如下:
for (var key in json) {
if (json.hasOwnProperty(key)) {
if (typeof json[key]=="object") {
JsonLoop(json[key]);
}else {
console.log("key:" + key + ", val:" + json[key]);
}
}
}
}
//调用方式
JsoanLoop(JsonObject);
在.net中默认不支持json数据格式的读写,如果我们需要操作这种数据格式,可以分开来处理。
1.ajax中用json数据格式传递,ashx中接收,并作为参数处理,返回值为text类型。如
url: "ajax/jsontest.ashx",
data: {"id":1,"name":"zhangsan"}, //json数据格式
type: 'POST',
success: function (data) { alert(data); }
});
ashx使用的代码,可以直接通过变量名来接收
string name = context.Request.Form["name"];
context.Response.Write(string.Format("id={0},name={1}",id,name));
2.asp.net操作json数据
vs2012支持json的序列号和反序列化,但是之前的版本并不支持。所以我从google中搜索到Net.Json类(开源)。可以方便的操作json数据。
下载地址:http://sourceforge.net/projects/csjson/?source=dlp
Net.Json使用如下:
$.ajax({
url: "ajax/jsontest.ashx",
data: {"id":1}, //json数据格式
dataType: 'json', //设置数据类型
type: 'POST',
success: function (data) { JsonLoop(data); }, //调用遍历函数
error: function (data,error){alert(error+":"+data)}
});
}
然后在ashx中接收id,并返回josn数据类型。
int id = int.Parse(context.Request.Form["id"]);
JsonObjectCollection jsonObject = new JsonObjectCollection();
jsonObject.Add(new JsonStringValue("name","zhangsan"));
jsonObject.Add(new JsonObjectCollection("address",
new JsonObject[3]
{
new JsonStringValue("address1", "北京1"),
new JsonStringValue("address2", "北京2"),
new JsonStringValue("address3", "北京3")
}));
context.Response.Write(jsonObject.ToString()); //返回json
原创文章,转载请注明: 转载自沉默的小丑
本文链接地址: Json数据使用及学习方法
Json数据使用及学习方法的更多相关文章
- 使用TSQL查询和更新 JSON 数据
JSON是一个非常流行的,用于数据交换的文本数据(textual data)格式,主要用于Web和移动应用程序中.JSON 使用“键/值对”(Key:Value pair)存储数据,能够表示嵌套键值对 ...
- 利用Python进行数据分析(2) 尝试处理一份JSON数据并生成条形图
一.JSON 数据准备 首先准备一份 JSON 数据,这份数据共有 3560 条内容,每条内容结构如下: 本示例主要是以 tz(timezone 时区) 这一字段的值,分析这份数据里时区的分布情况. ...
- Salesforce Apex 使用JSON数据的示例程序
本文介绍了一个在Salesforce Apex中使用JSON数据的示例程序, 该示例程序由以下几部分组成: 1) Album.cls, 定了了封装相关字段的数据Model类 2) RestClient ...
- MVC使用ajax异步刷新时怎样输出从后台中传过来的JSON数据
前言 这几天在学习MVC使用AJAX异步刷,因为是新手.所以在js中传参数到后台以及后台返回数据到前台怎么接受,怎么前台遍历出JSON数据都开始不知道,相信新手在使用时跟我一样会遇到,这里我就和大家分 ...
- ASP.NET提取多层嵌套json数据的方法
本文实例讲述了ASP.NET利用第三方类库Newtonsoft.Json提取多层嵌套json数据的方法,具体例子如下. 假设需要提取的json字符串如下: {"name":&quo ...
- jQuey知识点三 解析json数据
1.解析简单数据 @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="vie ...
- JSON数据的使用
JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧. JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON ...
- ajax获取json数据 for select2
json数据“a.json” [ { "id": "1", "text": "张三" }, { "id&quo ...
- Web API返回JSON数据
对Web API新手来说,不要忽略了ApiController 在web API中,方法的返回值如果是实体的话实际上是自动返回JSON数据的例如: 他的返回值就是这样的: { "Conten ...
随机推荐
- 11.5.1 LVS-DR 实验
lvs-server VIP:10.211.55.99 DIP:10.211.55.23 负载均衡器 rs01 RIP:10.211.55.24 后端服务器 rs02 RIP:10.211.5 ...
- 10.6 Nginx 高并发连接
Nginx 高并发连接 什么是IO,输入输出 Web服务器IO的整个详细过程 (1)客户发起请求到服务器网卡: (2)服务器网卡接受到请求后转交给内核 ...
- Lamport时间戳论文笔记
本文主要参考文献[1]完成. 声明:本人仅在博客园发表了本文章,笔名LightningStar,其他网站均为转载. 笔记 私以为,论文中作者的核心工作是为分布式系统建立了一种数学模型,并基于这种数学模 ...
- Java基础之(一):JDK的安装以及Notepad++的下载
从今天开始就开始我的Java的学习了,学习Java前需要做一些前期的准备工作.好了,现在我们先一起来安装JDK. JDK的安装 JDK下载链接:JDK 下载电脑对应的版本,同意协议 双击安装JDK 将 ...
- 洛谷3703 SDOI2017树点涂色(LCT+线段树+dfs序)
又一道好题啊qwqqqq 一开始看这个题,还以为是一个树剖的什么毒瘤题目 (不过的确貌似可以用树剖啊) qwq这真是一道\(LCT\)维护颜色的好题 首先,我们来一个一个操作的考虑. 对于操作\(1\ ...
- 使用Python写词云数据可视化
词云的应用场景 会议记录 海报制作 PPT制作 生日表白 数据挖掘 情感分析 用户画像 微信聊天记录分析 微博情感分析 Bilibili弹幕情感分析 年终总结 安装本课程所需的Python第三方模块 ...
- 【UE4 C++】定时器 Timer 与事件绑定
概念 定时执行操作,可执行一次,或循环执行直到手动终止 定时器在全局定时器管理器(FTimerManager 类型)中管理.全局定时器管理器存在于 游戏实例 对象上以及每个 场景 中 定时器需要绑定委 ...
- win10安装git fatal: open /dev/null or dup failed: No such file or directory错误解决方法
原因看大家意思应该是 非即插即用驱动文件null.sys问题. 网上有很多方案.最后试了一个可行的. 替换 windows/system32/drivers/null.sys为网盘中的文件即可. 链 ...
- qwt使用细节
在使用QWT进行二维曲线绘制,使用方法如下: class Plot: public QwtPlot { Q_OBJECT -- } 报错:error LNK2001: 无法解析的外部符号"p ...
- 三极管和MOS管驱动电路的正确用法
1 三极管和MOS管的基本特性 三极管是电流控制电流器件,用基极电流的变化控制集电极电流的变化.有NPN型三极管(简称P型三极管)和PNP型三极管(简称N型三极管)两种,符号如下: MOS管是电压控制 ...