先报答案,常用的就两种(都需要导入Jar包):
1、GSON解析。
2、FastJson解析。
GSON解析
这是google开源的一种解析方式,在idea使用之前需要导入jar包,可以直接去GitHub上下载。
使用方法
Object——>JsonString
1、创建一个类的对象。
2、创建一个Gson对象
2、使用Gson中的toJson方法
JsonString——>Object
1、创建一个Gson对象
2、使用fromJson方法,fromJson(String,类.class)
注意事项:
1、Json实际上就是键值对的集合,所以可以转换为Map集合
2、如果Json键值对中的值是数组,在转换时类型会变成List
3、因为Book在创建时就已经确定了属性都是String,所以验证List的时候直接在Json字符串后面添加了一个page的属性,这个字符串已经不能转换为Book类型了。
源码
import com.google.gson.Gson;
import java.util.List;
import java.util.Map;
/**
* 使用GSON解析JSON
*/
public class Demo_GSON {
public static void main(String[] args) {
//创建一个Book的对象
Book book = new Book("1001","三体","三体人和地球人之间的战争。");
//创建Gson对象
Gson gson = new Gson();
//将对象转化为JSON字符串
String json = gson.toJson(book);
System.out.println(json);
//1、将JSON字符串转换为对象
Book book2 = gson.fromJson(json,Book.class);
System.out.println(book2.getName());
//2、将JSON字符串转变为Map对象
Map<String,String> map = gson.fromJson(json,Map.class);
System.out.println(map.get("info"));
//3、如果Map的值是数组,会直接转变为List
//数组:["三体人","地球人","打仗"]
//{"id":"1001","name":"三体","info":"三体人和地球人之间的战争。","page":["三体人","地球人","打仗"]}
String json3 = "{\"id\":\"1001\",\"name\":\"三体\",\"info\":\"三体人和地球人之间的战争。\",\"page\":[\"三体人\",\"地球人\",\"打仗\"]}";
Map map1 = gson.fromJson(json3, Map.class);
List<String> list =(List) map1.get("page");
System.out.println(list.get(1)+list.get(2));
}
}
FastJson
这是国内常用的阿里开源的一款json解析方式,当然,它也需要导入jar包
使用方法
Object——>JsonString
不需要创建对象,直接JSON.toJSONString();就可以了。
JsonString——>Object
1、转换为对象:parseObject。
2、转化为数组:parseArray(可以理解为解析成Map集合后,其中的一个值也能使用JSON的方法,对应Gson中的get和强制转换)
源码
import com.alibaba.fastjson.JSON;;
import java.util.List;
public class Demo_FastJson {
public static void main(String[] args) {
//创建一个Book的对象
Book book = new Book("1001","三体","三体人和地球人之间的战争。");
//直接解析为JSON字符串
String json = JSON.toJSONString(book);
System.out.println(json);
//将JSON字符串转化为对象
Book book2 = JSON.parseObject(json,Book.class);
System.out.println(book2.getId());
//将JSON字符串中的数组转换为Array:["一二三","四五六","七八"]
List<String> list = JSON.parseArray("[\"一二三\",\"四五六\",\"七八\"]", String.class);
System.out.println(list.get(1));
}
}