JSON学习
来源:互联网 发布:matlab矩阵的取值 编辑:程序博客网 时间:2024/06/06 01:31
1.json的定义
json(JavaScript Object Notation) 是一种轻量级的数据交换格式,能够在服务器之间交换数据。在json出现之前,通用的数据交换语言是XML,但是XML的生成与解析比较麻烦。json的规格非常简单,规定如下:
(1)并列的数据之间用逗号(",")分隔
(2)映射用冒号(“:”)
(3)并列数据的集合(数组)用方括号(“[]”)表示
(4)映射的集合(对象)用大括号(“{}”)表示
2.json的构建方式
json简单说就是javascript中的对象和数组,所以json的构建结构就有对象和数组两种,通过这两种结构可以表示各种复杂的结构
(1)对象
对象在js中表示为“{}”扩起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。
举例:
{ "firstName": "Brett" }
{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" }
(2)数组
数组在js中是中括号“[]”扩起来的内容,数据结构为 ["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。
举例:
3.操作json数据
例子
var people = { "programmers": [ { "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },
(1)访问数据
要想访问 programmers 列表的第一个条目的姓氏,可以这样写
people.programmers[0].lastName;
(2)修改数据
people.musicians[1].lastName = "Rachmaninov";
(3)换回字符串
如果不能轻松地将对象转换回本文提到的文本格式,那么所有数据修改都没有太大的价值。在 JavaScript 中这种转换也很简单:
4.使用json串
(1)json串转化为java类
不同平台互通时,会涉及到json串的传递。比如A要调用B的API,B的返回数据的格式如下
{"OcsInstances":
{"OcsInstance":
[
{
"Bandwidth":4.5,"Capacity":128,"ConnectionDomain":"m.jst.ocs.aliyuncs.com","Connections":50,"OcsInstanceId":"0c44e4dcf27611e2","OcsInstanceStatus":"Available","Port":11211,"Qps":300,"RegionId":"cn-hangzhou-cm10-01","UserName":"0c44e4dcf27611e2"
},
{
"Bandwidth":4.5,"Capacity":128,"ConnectionDomain":"m.jst.ocs.aliyuncs.com","Connections":50,"OcsInstanceId":"0c5baaf0f27611e2","OcsInstanceName":"111","OcsInstanceStatus":"Available","Port":11211,"Qps":300,"RegionId":"cn-hangzhou-cm10-01","UserName":"0c5baaf0f27611e2"
},
{
"Bandwidth":4.5,"Capacity":128,"ConnectionDomain":"m.jst.ocs.aliyuncs.com","Connections":50,"OcsInstanceId":"6e66955af39511e2","OcsInstanceName":"123","OcsInstanceStatus":"Available","Port":11211,"Qps":300,"RegionId":"cn-hangzhou-cm10-01","UserName":"6e66955af39511e2"
},
{
"Bandwidth":4.5,"Capacity":256,"ConnectionDomain":"m.jst.ocs.aliyuncs.com","Connections":50,"OcsInstanceId":"f4f69cd2f39f11e2","OcsInstanceName":"123","OcsInstanceStatus":"Available","Port":11211,"Qps":300,"RegionId":"cn-hangzhou-cm10-01","UserName":"f4f69cd2f39f11e2"
}
]
},
"RequestId":"1F9F97DE-F6C5-4F13-9075-F335B5358E56"
}
假如B要获得每条记录中OcsInstanceId、OcsInstanceName、OcsInstanceStatus的值,那么B如何解析呢,B一般会封装一个类,来对json串进行解析,类如下
public class ModifyOcsInstanceAttributeResponse extends AliyunResponse {
private OcsInstances ocsInstances;//这里的OcsInstances就是上面的映射,ocsInstances里面包含数组OcsInstance,后面会定义
public OcsInstances getOcsInstances() {
return ocsInstances;
}
public void setOcsInstances(OcsInstances ocsInstances) {
this.ocsInstances = ocsInstances;
}
//ocsInstances里面包含数组OcsInstance
public static class OcsInstances {
private List<OcsInstance> ocsInstance;
public List<OcsInstance> getOcsInstance() {
return ocsInstance;
}
public void setOcsInstance(List<OcsInstance> ocsInstance) {
this.ocsInstance = ocsInstance;
}
}
//写OcsInstance的get、set三个属性(OcsInstanceId、OcsInstanceName、OcsInstanceStatus)的方法
public static class OcsInstance implements Serializable {
private String ocsInstanceId;
private String ocsInstanceName;
private String ocsInstanceStatus;
public String getOcsInstanceId() {
return ocsInstanceId;
}
public void setOcsInstanceId(String ocsInstanceId) {
this.ocsInstanceId = ocsInstanceId;
}
public String getOcsInstanceName() {
return ocsInstanceName;
}
public void setOcsInstanceName(String ocsInstanceName) {
this.ocsInstanceName = ocsInstanceName;
}
public String getOcsInstanceStatus() {
return ocsInstanceStatus;
}
public void setOcsInstanceStatus(String ocsInstanceStatus) {
this.ocsInstanceStatus = ocsInstanceStatus;
}
}
}
(2)将后台数据以json串的形式给前端
比如后台数据为一个Map,我们要以json串的形式传给前台,我们可以这样写
Map obj=new LinkedHashMap();obj .put("name","foo");obj .put("num",new Integer(100));obj .put("balance",new Double(1000.21));obj .put("is_vip",new Boolean(true));obj .put("nickname",null);String jsonText = JSONValue.toJSONString(obj);//将obj转化为json串的形式 System.out.print(jsonText);结果:{"name":"foo","num":100,"balance":1000.21,"is_vip":true,"nickname":null}
- json学习-什么是json
- 【json】慕课网json学习
- JSON 学习
- JSON学习
- JSON学习
- JSON学习
- JSON学习
- JSON学习
- json 学习
- JSON学习
- JSON学习
- json学习
- json学习
- JSON学习
- json学习
- 学习JSON
- JSON学习
- json学习
- PHP setcookie无效的原因分析
- ActionBarSherlock组件。
- Amlogic修改LCD亮度最小值与去掉设置---平板电脑---系统更新
- C++ 异常处理 catch(...)
- 贪心 CF 332 C 好题 赞
- JSON学习
- ASIHttpRequest学习笔记(1):创建队列、下载请求、断点续传、解压缩
- This solution contains no resources scoped for a Web application and cannot be deployed to a .....
- dcom配置
- python 装饰器
- Android 对话框(三)自定义对话框
- 少奋斗10年的经验
- 反射实际运用
- C++完美实现Singleton模式