Java创建和解析Json数据方法(四)——json-lib包的使用

(四)json-lib包的使用

        既然json-lib包比org.json包重量级,那么json-lib包肯定有很多org.json包没有的类和方法,这篇笔记简单记录json-lib包中,json数据转换为java bean、Collection、java array等的方法。

1.json-lib包与org.json包

        ①org.json包比json-lib包要轻量级,不需要依赖各种工具包;

        ②将Java对象(beans, maps, collections, java arrays等)转换为json数据时,两者的功能差不多;

        ③同样拥有各种getXXX()和optXXX()方法等来解析json数据;

        ④json-lib包可直接将json数据转换为java bean、Collection、java array等

2.解析json对象

        沿用上篇笔记的Student类:

2.1 json数据转为bean类

例子:

package jsonlib;
import net.sf.json.*;
public class JsonlibTest {
	public static void main(String[] args) {
		// 创建一个bean
		Student student = new Student(); 
		student.setName("JTZen9");
		student.setAge(21);
		student.setSex("male");
		// bean类转为json对象
		JSONObject jsonObject = JSONObject.fromObject(student); 
		System.out.println(jsonObject);
		// 方法一,json对象转为bean类
		Student student2 = (Student) JSONObject.toBean(jsonObject, Student.class);
		System.out.println(student2.getName() + " " + student2.getAge() + " " + student2.getSex());
		// 方法二
		JsonConfig jsonConfig = new JsonConfig();
		jsonConfig.setRootClass(Student.class);
		Student student3 = (Student) JSONObject.toBean(jsonObject, jsonConfig);
		System.out.println(student3.getName() + " " + student3.getAge() + " " + student3.getSex());
	}
}

输出结果:

2.2 json数据转为List类

例子:

package jsonlib;
import java.util.ArrayList;
import java.util.List;
import net.sf.json.*;
public class JsonlibTest {
	public static void main(String[] args) {
		List<string> list = new ArrayList<string>();
		list.add("JTZen9");
		list.add("heiheihei");
		list.add("DSMGYH");
		JSONArray jsonArray = JSONArray.fromObject(list);
		System.out.println(jsonArray);
		List<string> list2 = (List<string>) JSONArray.toList(jsonArray);
		System.out.println(list2.get(0) + " " + list2.get(1) + " " + list2.get(2));

		List<student> listStudent = new ArrayList<student>();
		for (int i = 0; i < 3; i++) {
			Student student = new Student();
			student.setName("JTZen9" + i);
			student.setAge(i);
			student.setSex("male");
			listStudent.add(student);
		}
		JSONArray sJsonArray = JSONArray.fromObject(listStudent);
		System.out.println(sJsonArray);
		// JSONArray转换为List<student>,方法一
		List<student> sList1 = (List<student>) JSONArray.toList(sJsonArray, Student.class);
		System.out.println(sList1.get(1).getAge());
		// 方法二
		JsonConfig jsonConfig = new JsonConfig();
		jsonConfig.setRootClass(Student.class);
		List<student> sList2 = (List<student>) JSONSerializer.toJava(sJsonArray, jsonConfig);
		System.out.println(sList2.get(1).getAge());
	}
}

输出结果:

3.jsonConfig类

        jsonConfig类是帮助配置序列化过程的实用程序类,可以用它来在json和java对象转换过程中进行一些配置设置。

例如:当我们将一个java bean类转换为json对象时,往往会把bean类中所有的属性字段转为json对象的相应字段。如果我们要过滤掉bean类中的一些属性的时候呢,就可以使用jsonConfig类。

package jsonlib;
import net.sf.json.*;
public class JsonlibTest {
	public static void main(String[] args) {
        Student student = new Student();
        student.setName("JTZen9");
        student.setSex("male");
        student.setAge(21);
        JSONObject jsonObject1 = JSONObject.fromObject(student);
        System.out.println(jsonObject1);   //正常输出三个字段
        
        JsonConfig jsonConfig = new JsonConfig();
        jsonConfig.setExcludes(new String[]{ "sex" });  //过滤要输出的字段
        JSONObject jsonObject2 = JSONObject.fromObject(student, jsonConfig);
        System.out.println(jsonObject2.toString());
	}
}

输出结果如下(过滤了sex字段):

 

jsonConfig类还有很多其他的用法,以后用到的时候在继续完善。

4.结束语

        json-lib包,比org.json包具有的功能要多,很多方法日后用到再记录。

        可以根据需求选择不同的工具包,org.json包比较轻量级,但实现的功能有限,如果只是简单的转换java对象为json数据,那么org.json包就足够了。

 

 

 

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值