JSON的相关操作和与java对象的转化
JSON概述:
JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
使用{}进行包含对象,可以使用[]包含{}对象的形式,对象里面也可以含有[]。
JSON实例:
{ "firstName":"John" , "lastName":"Doe" }
[
{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" ,
"lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" }
]
JSON的获取:
对于{}花括号里面的获得由两种方式:
- 直接花括号的对象引用.键名(注意:键名不加双引号)
- 使用花括号对象的引用["键名"] (注意:键名加双引号)
对于中括号对象的获得方式是通过数组索引的方式获得
代码实现:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>JESON的基本操作</title> </head> <script> let person = {"name": "zhangsan", "age": 23, "gender": true}; for (let key in person) { alert(key + " " + person[key]);//在这里获得的key是自带双引号的,所以只能使用数组的方式获得 } /* * 对于{}花括号里面的获得由两种方式: * 1.直接花括号的对象引用.键名 * */ alert(person.name); /* * 2.使用花括号对象的引用["键名"] * * */ alert(person["age"]); /* * 对于中括号对象的获得方式是通过数组索引的方式获得 * */ let address = [{"河南": "郑州"}, {"湖北": "武汉"}] alert(address[0].河南); </script> <body> </body> </html>
值得注意的是使用for in 遍历混的key的时候获得的key是自带“”双引号的。
java对象转JSON
我们可以利用工具将java对象转化成为JSON字符串,也可以将JSON字符串转化成为java对象,工具有很多我们使用jackson工具导入相关的jar包即可。
操作步骤:
- 导入jackson的相关jar包
- 创建jackson核心对象ObjectMapper
- 调用ObjectMapper对象的相关方法进行转换
java对象转换成jeson的三种方法
- 直接转化成jeson
- 转化成jeson之后写到指定文件中
- 转化成jeson然后以流的方式写入到文件或者其他的流中比如响应流中
代码实现:
ObjectMapper mapper = new ObjectMapper(); try { //1.直接转化成jeson String jeson = mapper.writeValueAsString(person); System.out.println(jeson); //2.转化成jeson之后写到指定文件中 mapper.writeValue(new File("E://a.txt"),person); //3.转化成jeson然后以流的方式写入到文件或者其他的流中比如响应流中 mapper.writeValue(new FileWriter("E://b.txt"),person); } catch (Exception e) { e.printStackTrace(); }
两个关于JSON的注解
- @JsonIgnore :排除属性
- @JsonFormat(pattern="yyyy-MM-dd") :属性值格式化(对日期的格式化)
代码演示:
package com.itheima.domain; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonIgnore; import java.util.Date; public class Person { private String name; private int age; private String gender; // @JsonIgnore 注解的作用是当转化json的时候忽略这个属性不进行转化这个属性 @JsonFormat(pattern = "yyyy-MM-dd")//注解的作用第当进行转换json是对这个属性进行相应的格式转化 private Date birthday; public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + ", gender='" + gender + '\'' + '}'; } }
复杂java对象的转换:
- List对象 :转换后的JSON形式是数组的形式
- Map对象 :转换后的JSON形式是简单花括号对象的形式(一般使用Map制造需要的JSON)
代码实现:
/转化List集合成为数组 /* String l = mapper.writeValueAsString(list); System.out.println(l);*/ /* * Map转化成为普通花括号对象 * */ /*Map<String,String> map=new HashMap<>(); map.put("name","张三"); map.put("age","23"); map.put("gender","男"); String m = mapper.writeValueAsString(map); System.out.println(m);*/
关于AJAX响应格式的设置:
服务器的响应的数据,在客户端使用时,要想当做JSON数据格式使用则必须进行相关的设置,方法有两种:
- $.get();或者$.post();方法的最后一个参数type指定为“json”
- 在服务器端设置MIME类型:response.setContentType("application/json;charset=utf-8");
迎风少年