主要分为以下四类:
json-lib是较早出现且应用最广泛的json解析工具,但是较多的依赖第三方jar包。
使用json-lib需引入以下jar包:
且较复杂的类型转换json-lib会产生缺陷,出现问题。因此json-lib如今一般无法满足互联网化的需求。
使用实例:
package cn.cf.domain;
/**
* 商品实体类
*
* @author Administrator
*
*/
public class Product {
private String name;
private Double price;
private String category;
private Double weight;
public Product() {
super();
}
public Product(String name, Double price, String category, Double weight) {
super();
this.name = name;
this.price = price;
this.category = category;
this.weight = weight;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public Double getWeight() {
return weight;
}
public void setWeight(Double weight) {
this.weight = weight;
}
@Override
public String toString() {
return "Product [name=" + name + ", price=" + price + ", category=" + category + ", weight=" + weight + "]";
}
}
测试代码TestDemo.java
代码如下:
//创建product对象
Product product1 = new Product("火龙果",20d,"水果",2d);
Product product2 = new Product("东北散装珍珠米",10d,"粮食",3d);
Product product3 = new Product("排骨",24d,"肉类",0.5d);
//创建产品list集合
List list =new ArrayList();
list.add(product1);
list.add(product2);
list.add(product3);
//创建产品map集合
Map map = new HashMap();
map.put(product1.getName(), product1);
map.put(product2.getName(), product2);
map.put(product3.getName(), product3);
//将product转换为json
JSONArray jsonBean = JSONArray.fromObject(product1);
System.out.println("输出product的json数据");
System.out.println(jsonBean);
//将list集合转换为json
JSONArray jsonArray = JSONArray.fromObject(list);
System.out.println("输出list的json数据");
System.out.println(jsonArray);
//将map集合转为json
JSONArray jsonMap = JSONArray.fromObject(map);
System.out.println("输出map的json数据");
System.out.println(jsonMap);
使用JsonCofig进行筛选要显示的数据
/*
* 设置筛选条件
*/
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setExcludes(new String[] {"weight", "category"});
//单个bean不显示重量,分类
System.out.println("输出product筛选的json数据");
JSONArray jsonBean1 = JSONArray.fromObject(product1, jsonConfig);
System.out.println(jsonBean1);
//list不显示重量分类
System.out.println("输出list筛选的json数据");
JSONArray jsonArray1 = JSONArray.fromObject(list, jsonConfig);
System.out.println(jsonArray1);
//map不显示重量分类
JSONArray jsonMap1 = JSONArray.fromObject(map, jsonConfig);
System.out.println("输出mapt筛选的json数据");
System.out.println(jsonMap1);
jsonObject转为JavaBean
//jsonObject转换为JavaBean
String str = "{'name':'鸡蛋','price':8,'weight':1.3,'category':'禽蛋'}";
Product product4 = (Product) JSONObject.toBean(JSONObject.fromObject(str), Product.class);
System.out.println(product4);
结果如下:
jackson相比于json-lib框架,所需要的依赖jar包要少一点,性能较高且简单易用。
需引入jar包:
实例如下:
转json
//创建product对象
Product product1 = new Product("火龙果",20d,"水果",2d);
Product product2 = new Product("东北散装珍珠米",10d,"粮食",3d);
Product product3 = new Product("排骨",24d,"肉类",0.5d);
//创建产品list集合
List list =new ArrayList();
list.add(product1);
list.add(product2);
list.add(product3);
//创建产品map集合
Map map = new HashMap();
map.put(product1.getName(), product1);
map.put(product2.getName(), product2);
map.put(product3.getName(), product3);
//ObjectMapper为Jackson的核心,所有json操作都是用ObjectMapper实现
ObjectMapper mapper = new ObjectMapper();
//Product转化为json
String productJson = mapper.writeValueAsString(product1);
System.out.println("Product转化为json");
System.out.println(productJson);
//list转化为json
String listJson = mapper.writeValueAsString(list);
System.out.println("list转化为json");
System.out.println(listJson);
//map转化为json
String mapJson = mapper.writeValueAsString(map);
System.out.println("map转化为json");
System.out.println(mapJson);
String str = "{\"name\":\"鸡蛋\",\"price\":8,\"weight\":1.3,\"category\":\"禽蛋\"}";
Product product4 = mapper.readValue(str, Product.class);
System.out.println(product4);
字符串需使用双引号,使用单引号报错
结果如下:
Gson是Google研发的,目前功能最全的Json解析器。主要应用toJson和fromJson两个转换函数,无需额外的依赖,使用较方便
使用jar包:
实例如下(实体类同上例):
转化为json
// 创建product对象
Product product1 = new Product("火龙果", 20d, "水果", 2d);
Product product2 = new Product("东北散装珍珠米", 10d, "粮食", 3d);
Product product3 = new Product("排骨", 24d, "肉类", 0.5d);
// 创建产品list集合
List list = new ArrayList();
list.add(product1);
list.add(product2);
list.add(product3);
// 创建产品map集合
Map map = new HashMap();
map.put(product1.getName(), product1);
map.put(product2.getName(), product2);
map.put(product3.getName(), product3);
// 创建Gson对象
Gson gson = new Gson();
//将product转换为json
System.out.println("输出product的json数据");
String jsonProduct = gson.toJson(product1);
System.out.println(jsonProduct);
//将list集合转换为json
System.out.println("输出list的json数据");
String jsonArray = gson.toJson(list);
System.out.println(jsonArray);
//将map集合转为json
String jsonMap = gson.toJson(map);
System.out.println("输出map的json数据");
System.out.println(jsonMap);
String str = "{'name':'鸡蛋','price':8,'weight':1.3,'category':'禽蛋'}";
Product product4 = gson.fromJson(str, Product.class);
System.out.println(product4);
结果如下:
FastJson是阿里巴巴的开源框架,速度很快,且无其他依赖
导入jar包:
实例如下:
转为json
String jsonProduct = JSON.toJSONString(product1);
System.out.println(jsonProduct);
String jsonArray = JSON.toJSONString(list);
System.out.println(jsonArray);
String jsonMap = JSON.toJSONString(map);
System.out.println(jsonMap);
String str = "{'name':'鸡蛋','price':8,'weight':1.3,'category':'禽蛋'}";
Product product4 = JSON.parseObject(str, Product.class);
System.out.println(product4);
结果如下:
以上是JSON的四种解析工具的基础用法。详细的后部再单个补充。