Json详解

简述

  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:
File:将obj对象转为JSON字符串,并保存到指定的文件中
Writer:将obj对象转为JSON字符串,并将json数据填充到字符输出流中
OutputStream:将obj对象转为JSON字符串,并将json数据填充到字节输出流中
参数2:
  Object对象
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);

 

 

 

 

 

  

  

posted @ 2021-07-01 20:21  艾尔夏尔-Layton  阅读(268)  评论(0编辑  收藏  举报