JSON
基本概念
JavaScript Object Notation:JavaScript对象表示法
json对象是JavaScript中的数据对象,其实就类似于java中一个没有方法只有属性的类。
1 | Person p = new Person(); |
json数据是由键值对构成的,其中key用单、双引号或者不用引号引起来都可以,key只是表示属性名,也就相当于变量名,并不具有特定的数据类型;value的取值类型有:
- 数字(整数或浮点数)
- 字符串(在双引号中)
- 逻辑值(true或false)
- 数组(在方括号中){“person”:[{},{}]}
- json对象(在花括号中){“address”:{“province”:”陕西”}}
- null
语法规则
一定要搞清楚json对象和json数据的关系:json对象是一个变量,指向json键值对数据。json对象不是json键值对中的键。
- json对象中的不同键值对用逗号分隔
- 用花括号来保存json对象,一个花括号表示一个json对象
- 用方括号来表示数组,可以有json对象数组,json数据中的value类型也可以是数组
获取数据:
- json对象.键名
- json对象[“键名”]
- json对象数组[索引].键名
遍历json对象中的键值对:
1 | var person = {"name": "张三", age: 23, 'gender': true}; |
遍历json对象数组中的键值对:
1 | var ps = [{"name": "张三", "age": 23, "gender": true}, |
JSON数据和Java对象的相互转换
常用json解析器:jackson(Spring内置的json解析器)
JSON数据转为Java对象的步骤:
导入jackson相关jar包
在java语句中创建Jackson核心对象ObjectMapper
调用ObjectMapper的相关方法进行转换:readValue(json字符串数据,Class);
Java对象转为JSON对象的步骤:
导入jackson相关jar包
在java语句中创建Jackson核心对象ObjectMapper
调用ObjectMapper的相关方法进行转换:
- writeValue(参数1,obj);当参数1为:
- File:将obj对象转换为JSON字符串,并保存到指定的文件中
- Writer:将obj对象转换为JSON字符串,并将json数据填充到字符输出流中
- OutputStream:将obj对象转换为JSON字符串,并将json数据填充到字节输出流中
- writeValueAsString(obj);将对象转为json字符串
- writeValue(参数1,obj);当参数1为:
在java中的obj对象的javabean封装类的属性前添加注解
- @JsonIgnore:排除属性,该注解后的属性在java对象被转化成json时不加入json键值对中。
- @JsonFormat:属性值得格式化,该注解后的属性在java对象被转化成json时该属性对应的值字符串按小括号中的格式输出(一般用于Date类型属性,@JsonFormat(pattern = “yyyy-MM-dd”) )。
java对象也可以是List、Map对象,只要保持对象中元素格式没问题就行。