1、概念:JavaScript Object Notation javascript对象表示法
例如:
Person p=new Person;
p.setName("张三");
p.setAge(23);
p.setGender("男");
用json表示如下 :
var p={"name":"张三","age":23,"gender","男"};
发现用json来表示对象特别简单方便。
现在用来存储和交换文本信息的语法,进行数据的传输,类似于XML。比XML更小、更快、更容易解析。
2、语法:
基本规则:
1):数据在名称/值对中
键用引号引起来,单双引号都可以,也可以不使用引号
值得取值类型:
数字:可以直接写
字符串:在双引号中
逻辑值:true或false
数组:放在括号中,可以嵌套
对象:放在花括号中,可以嵌套
null:非常少见
2):数据由逗号分隔
多个键值对由逗号分隔
3):花括号保存对象
使用{}定义json格式
4):方括号表示数组
[]用来表示数组
2.嵌套格式:
1){[]}
var persons={"persons":[{"name":"张三","age":23,"gender":"男"},{"name":"张二","age":23,"gender":"男"},{"name":"张五","age":23,"gender":"男"}]};
2)[{}]
var ps=[{"name":"张三","age":23,"gender":"男"},{"name":"张二","age":23,"gender":"男"},{"name":"张五","age":23,"gender":"男"}]
3、获取数据
1.json对象.键名
var p={"name":"张三","age":23,"gender","男"};
var name=p.name;
alert(name);
2.json对象["键名"]
var p={"name":"张三","age":23,"gender","男"};
var name=p["name"];
alert(name);
3.数组对象[索引]
1)
var persons={"persons":[{"name":"张三","age":23,"gender":"男"},{"name":"张二","age":23,"gender":"男"},{"name":"张五","age":23,"gender":"男"}]};
var name=persons.persons[2].name;
alert(name);
2)
var ps=[{"name":"张三","age":23,"gender":"男"},{"name":"张二","age":23,"gender":"男"},{"name":"张五","age":23,"gender":"男"}];
var name=ps[1].name;
alert(name);
4.json的遍历:
1)
var p={"name":"张三","age":23,"gender","男"};
for(var key in p){
alert(key+":"+person[key]);//注:不能用person.key 这相当于person."name".
}
2)
var ps=[{"name":"张三","age":23,"gender":"男"},{"name":"张二","age":23,"gender":"男"},{"name":"张五","age":23,"gender":"男"}];
for(var i=0;i<ps.length;i++){
var p=ps[i];
for(var key in p){
alert(key+":"+p[key]);
}
}
5、json数据和java对象的相互转换:json解析器:Jsonlib Gson fastjson jackson(spring mvc内置解析器)
1)json转为java对象(用得少)
使用步骤:
1、导入jackson的相关jar包:jackson-annotation-2.2.3.jar、jackson-core-2.2.3.jar、jackson-databind-2.2.3.jar
2、创建jackson核心独享 ObjectMapper
3、调用ObjectMapper的相关方法进行转换
转换方法:
readValue(json数据,class类型)
2)java对象转为json
使用步骤:
1、导入jackson的相关jar包:jackson-annotation-2.2.3.jar、jackson-core-2.2.3.jar、jackson-databind-2.2.3.jar
2、创建jackson核心独享 ObjectMapper
3、调用ObjectMapper的相关方法进行转换
转换方法:
writeValue(参数1,obj);
参数1:
File:将obj对象转换为json并写入到指定文件中
Writer:将obj对象转换为json并将json数据填充到字符输出流汇总
OutputStream:将obj对象转换为json并将json数据填充到字节输出流汇总
writeValueAsString():将对象转换为json字符串
注解:
1、@JsonIgnore:排除属性
2、@JsonFormat:属性值的格式化
如果想使用日期的时候会出现一堆数字,如果不想这样可以忽略对日期的转化,也可以格式化日期。在日期的定义行上面加入排除属性或者加入格式化在参数里面写入格式("yyyy-MM-dd")
6.复杂java对象转换
list和map使用方法一样,只是list结果格式为数组,map集合为无序