简述
Json是JavaScript Object Notation,中文是JavaScript对象表示法。json是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据。于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
基本规则
数据在名称/值对中:json数据是由键值对构成的。键由引号引起来,也可以不用引号
多个数据由逗号分隔
花括号保存对象:使用{}定义json格式
方括号表示数组
json值的取值类型:
数字 | (整数或浮点数) |
字符串 | (在双引号中) |
逻辑值 | (true 或 false) |
数组 | (在方括号中) {"persons":[{},{}]} |
对象 | (在花括号中) {"address":{"province":"陕西"....}} |
null | / |
获取数据
获取单数据
1.json对象.键名
2.json对象["键名"]
3.json数组对象[索引]
遍历json
对于json对象的遍历,我们就是在遍历它的key
var person = {"name":"张三","age":23,"gender":true}; for(var key in person){ //key获取出来就是个字符出,自带"" alert(key + ":" + person[key]) }
对于json数组的遍历,我们就要使用双重for循环的嵌套
var persons2 = [ {"name":"张三","age":23,"gender":true}, {"name":"李四","age":23,"gender":true}, {"name":"王五","age":23,"gender":true} ]; for(var i = 0;i<persons2.length;i++){ var p = persons2[i]; for(var key in p){ alert((key+":"+p[key])); } }
json数据和java对象的相互转换
json是在客户端和服务端数据传输的载体,所以就牵扯到json数据和java对象相互转换的问题。
首先要导入json相关的jar包
用于两者对象的相互转换的核心类是ObjectMapper类
json转java
我们用到readValue方法,两个参数分别为想要转换的json字符串、转换后的java类的class
String json = "{\"name\":\"张三\",\"age\":23,\"gender\":\"男\"}"; ObjectMapper objectMapper = new ObjectMapper(); Person person = objectMapper.readValue(json, Person.class); System.out.println(person);
java转json
对于转换成json方法我们有两个
writeValue(参数1,参数2): |
参数1: |
writeValueAsString(Obj) |
将传入的obj对象转为json字符串 |
一些相关的注解
@JsonIgnore | 排除属性 |
@JsonFormat | 时间属性值得格式化 |
@JsonIgnore可以注解在成员变量上面,代表这个成员变量不会被转换到json数据中
对于Date类型的成员变量,@JsonFormat(pattern = "yyyy-MM-dd")可以指定该时间的格式
List和Map对象转换为json
List对象其实转换出来就是一个json数组,里面含有多个json对象
Person p1 = new Person("张三",23,"男",new Date()); Person p2 = new Person("李四",23,"男",new Date()); Person p3 = new Person("王五",23,"男",new Date()); List<Person> list = new ArrayList<Person>(); Collections.addAll(list,p1,p2,p3); ObjectMapper objectMapper = new ObjectMapper(); String json = objectMapper.writeValueAsString(list); System.out.println(json);
Map对象其实就更加简单了,其实就是将Map对象里的键值对转化成一个对象罢了
Map<String,Object> map = new HashMap<String,Object>(); map.put("name","张三"); map.put("age",23); ObjectMapper objectMapper = new ObjectMapper(); String json = objectMapper.writeValueAsString(map); System.out.println(json);