JSON概述:
JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
使用{}进行包含对象,可以使用[]包含{}对象的形式,对象里面也可以含有[]。
JSON实例:
{ "firstName":"John" , "lastName":"Doe" }
[
{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" ,
"lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" }
]
JSON的获取:
对于{}花括号里面的获得由两种方式:
直接花括号的对象引用.键名(注意:键名不加双引号)
使用花括号对象的引用["键名"] (注意:键名加双引号)
对于中括号对象的获得方式是通过数组索引的方式获得
代码实现:
JESON的基本操作alert(key+ " " + person[key]);//在这里获得的key是自带双引号的,所以只能使用数组的方式获得
}/** 对于{}花括号里面的获得由两种方式:
* 1.直接花括号的对象引用.键名
**/alert(person.name);/** 2.使用花括号对象的引用["键名"]
*
**/alert(person["age"]);/** 对于中括号对象的获得方式是通过数组索引的方式获得
**/let address= [{"河南": "郑州"},
{"湖北": "武汉"}]
alert(address[0].河南);
值得注意的是使用for in 遍历混的key的时候获得的key是自带“”双引号的。
java对象转JSON
我们可以利用工具将java对象转化成为JSON字符串,也可以将JSON字符串转化成为java对象,工具有很多我们使用jackson工具导入相关的jar包即可。
操作步骤:
导入jackson的相关jar包
创建jackson核心对象ObjectMapper
调用ObjectMapper对象的相关方法进行转换
java对象转换成jeson的三种方法
直接转化成jeson
转化成jeson之后写到指定文件中
转化成jeson然后以流的方式写入到文件或者其他的流中比如响应流中
代码实现:
ObjectMapper mapper = newObjectMapper();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") :属性值格式化(对日期的格式化)
代码演示:
packagecom.itheima.domain;importcom.fasterxml.jackson.annotation.JsonFormat;importcom.fasterxml.jackson.annotation.JsonIgnore;importjava.util.Date;public classPerson {privateString name;private intage;privateString gender;//@JsonIgnore 注解的作用是当转化json的时候忽略这个属性不进行转化这个属性
@JsonFormat(pattern = "yyyy-MM-dd")//注解的作用第当进行转换json是对这个属性进行相应的格式转化
privateDate birthday;publicDate getBirthday() {returnbirthday;
}public voidsetBirthday(Date birthday) {this.birthday =birthday;
}publicString getName() {returnname;
}public voidsetName(String name) {this.name =name;
}public intgetAge() {returnage;
}public void setAge(intage) {this.age =age;
}publicString getGender() {returngender;
}public voidsetGender(String gender) {this.gender =gender;
}
@OverridepublicString 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 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");