JSON解析步骤
概念
JSON(JavaScript Object Notation) 是JS对象简谱,是一种轻量级的数据交换格式。它具有良好的可读性和便于快速编写的特性,是目前网络中主流的数据传输格式之一。
数据格式
JSON中有两种数据格式:对象格式和数组格式
对象格式:一个对象由大括号表示,括号中 描述对象的属性.通过键值对俩描述对象的属性(可以理解为,大括号中,包含的是一个个的键值对),键与值之间使用冒号连接,多个键值对之间使用逗号隔开,键值对的键应该使用引号(通常在java解析是,键不使用引号报错,而JS能正确解析);键值对中的值,可以是JS中的任意类型的数据
数组格式:[元素1,元素2…];
{//JSON格式
"name" :"张三",
"age" : "18",
"friends":["李四","王五",{
"name":"小明",
"age" :"19",
}];
"book":{
"name" : "西游记",
"info" : "讲述了唐僧师徒四人去往西天取经的故事",
}
}
java与JSON
java和JSON之前可以互相转换,可以将java对象快速转换为JSON格式的字符串,同时也可以将JSON字符串转换为java对象,它有两种方式Gson和FastJson.
Gson
Gson是谷歌推出的JSON和java之间相互转换的java(序列化与反序列化)库。利用Gson进行java和JSON之间的转换步骤是:
1.引入gson.jar(需要去下载该文件);
2.在需要准换JSON字符串的位置,创建一个JSON对象:
String json = new Gson().toJSON(要转换的对象);
public class demo{
public static main(String argv[]){
/**
*java对象转JSON字符串
*/
Gson json = new Gson();
Book b = new Book("西游记","讲述了唐僧师徒四人去往西天取经的故事");
String s= json.toJson(b);
System.out.println(s);
/**
*JSON字符串转java对象
*/
Gson json = new Gson();
Book b = json.fromJson("name":"西游记","info":"讲述了唐僧师徒四人去往西天取经的故事");
System.out.println(b.getName()+b.getInfo());
}
}
class Book{//创建一个Book类
private String name;//书名
private String info;//简介
public Book(String name,String info){
this.name = name;
this.info = info;
}
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setInfo(String info){
this.info = info;
}
public String getInfo(){
return info;
}
}
FastJson
FastJson是阿里巴巴开源的JSON解析库,它可以解析JSON格式的字符串,支持将Java序列化为JSON字符串,也可以从JSON Bean字符串反序列化到javaBean.转换步骤为:
1.引入FastJson.jar(需要下载)
2.在需要准换JSON字符串的位置,创建一个JSON对象:
public class demo{
public static main(String argv[]){
/**
*对象转换成JSON字符串
*/
Book b = new Book("西游记","讲述了唐僧师徒四人去往西天取经的故事");
String json = JSON.toJSONString(b);
System.out.println(json);
/**
*JSON转换成java对象
*/
Book b = JSON.parseObject("name":"西游记","info":"讲述了唐僧师徒四人去往西天取经的故事",Book.class);
System.out.println(b.getName());
/**
*转换成数组
*["西游记","三国演义,"水浒传"]
*/
List<String> s = JSON.parseArray(["西游记","三国演义","水浒传"],Sting.class);
System.out.prinfln(s.get[1]);
}
}
class Book{
private String name;
private String info;
public Book(String name,String info){
this.name = name;
this.info = info;
}
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void SetInfo(String info){
this.info = info;
}
public String getInfo(){
return info;
}
}
JSON比XML格式的数据传输来说,更加省流量,传输效率更高,FastJson比Gson的效率更高。