JSON:
概念:
JavaScript Object Notation: JavaScript对象表示法
JSON现在多用于存储和交换文本的语法,类似与xml
JSON比xml更小,更快,更易解析
语法:
基本规则:
- 数据在名称/值对中:json数据是由键值对构成的
- 键用单双引号或者不用引号
- 值的数据类型:
- 字符串(在双引号中)
- 数字(整数或者浮点数)
- 逻辑值(true或者false)
- 数组(在方括号中)
- 对象(在花括号中)
- null (空)
- 数据由逗号分隔:多个键值对由逗号分隔
- 花括号保存对象:使用{}定义json格式
- 方括号保存数组:[]
- 数据在名称/值对中:json数据是由键值对构成的
表现形式
基本格式
1
var person = {"name":"张三",age:23,'gender':true};
嵌套格式
- {}->[]
1
var persons = {"persons":[{"name":"张三",age:20},{"name":"李四",age:21},{"name":"王五",age:22}]};
- []->{}
1
var ps = [{"name":"张三",age:20},{"name":"李四",age:21},{"name":"王五",age:22}];
值的获取
1
2
3
4
5
6var name = person.name;
var name = person["name"];
var name = persons.persons[2].name;
var name = ps[1].name;遍历
1
2
3
4
5
6
7
8
9
10
11//获取persons json对象中所有的对象和值
for(var key in person) {
alert(key + ":" + person[key]);
}
//获取ps json对象中所有的对象和值
for(var i= 0; i < ps.length(); i++){
var p = ps[i];
for(var key in p){
alert(key + ":" + p[key])
}
}- json对象.键名
- json对象[“键名”]
- 数组对象[索引]
JSON数据和Java对象的相互转换
常见的json解析器:
- Jsonlib,Gson,FastJson,Jackson
JSON转为Java对象
使用步骤
导入jackson相关的jar包
创建jackson核心对象objectMapper
调用ObjectMapper的相关方法进行转换
1
readValue(json字符串数据,class对象);//将json字符串数据转化为参数class对应类的对象
Java对象转为JSON
使用步骤:
- 导入jackson的相关jar包
- 创建Jackson的核心对象,ObjectMapper
- 调用ObjectMapper的相关方法进行转换
1
2
3ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(参数1,obj); //参数1可以是File:将obj转化为json字符串,并保存到指定的文件中;参数1可以是Wirter:将obj转化为json字符串,并将json的数据填充到字符输出流中;参数1可以是OutputStream:将obj转化为json字符串,并将json数据填充到字节输出流中
mapper.writeValueAsString(obj); //将obj对象转化为json字符串注解:
- @JsonIgnore:排除属性,对应属性的键值对将不会进行转化
- @JSonFormat:属性值的格式化,将对应属性的值转化为不同的格式
复杂java对象转换为json:
list
1
mapper.writeValueAsString(list)
2. map
1
mapper.writeValueAsString(map)