json-lib使用笔记
今天再来记录一款生成JSON的工具——json-lib,它比较与我之前使用的FastJSON来说,使用都是很简单的,但是要使用json-lib要需要的jar包可真不少,所需要的依赖jar有八九个之多,就这一点来说还是使用FastJSON较为方便
json-lib需要的最全jar:
commons-beanutils.jar
commons-collections.jar
commons-lang.jar
commons-logging.jar
ezmorph.jar
json-lib-2.3-jdk15.jar
xom.jar
oro.jar
groovy-all.jar
junit.jar
只是用其主要功能需要的jar:
commons-beanutils.jar
commons-collections.jar
commons-lang.jar
commons-logging.jar
ezmorph.jar
json-lib-2.3-jdk15.jar
xom.jar
json-lib中的核心类
在json-lib中只有两个核心类:
JSONObject
JSONArray
开始使用
同样我们这里先准备一个JavaBean:
Person.java :
public class Person { private String name; private int age; private String sex; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public Person(String name, int age, String sex) { super(); this.name = name; this.age = age; this.sex = sex; } }
JSONObject类的使用:
直接new出JSONObject,就可以使用其方法:比如put()方法添加数据,toString()变成String 等等
//普通使用,类似使用map @Test public void fun1(){ JSONObject jsonObject=new JSONObject(); jsonObject.put("name", "zhangshan"); jsonObject.put("age", 21); jsonObject.put("sex", "男"); System.out.println(jsonObject.toString()); }
这就是没有使用JavaBean的时候直接添加属性与值,类似于map的使用
显示的数据格式:
{"name":"zhangshan","age":21,"sex":"男"}
如果使用JavaBean,就可以使用JSONObject的fromObject()(静态方法)方法
//将一个JavaBean转换为JSON @Test public void fun2(){ Person person=new Person("lz", 21, "男"); JSONObject json = JSONObject.fromObject(person); System.out.println(json.toString()); }
使用JavaBean的方式,最为规范最为常用
显示的数据格式:
{"age":21,"name":"lz","sex":"男"}
JSONArray类的使用
根据名字就可以猜到是处理数组/集合的类,也是先new出来该对象,然后添加数据就和list的使用较为类似
//以集合的方式生成JSON @Test public void fun3(){ Person person1=new Person("lz", 21, "男"); Person person2=new Person("xx", 21, "女"); JSONArray list=new JSONArray(); list.add(person1); list.add(person2); System.out.println(list.toString()); }
不存在集合的时候,将数据以数组形式生成JOSN
显示的数据格式:
[{"age":21,"name":"lz","sex":"男"},{"age":21,"name":"xx","sex":"女"}]
//原本就有一个集合,生成JSON格式 @Test public void fun4(){ Person person1=new Person("lz", 21, "男"); Person person2=new Person("xx", 21, "女"); List<Person> list=new ArrayList<Person>(); list.add(person1); list.add(person2); System.out.println(JSONArray.fromObject(list).toString()); }
原本就有一个集合,直接使用JSONArray.fromObject()方法即可
显示的数据格式:
[{"age":21,"name":"lz","sex":"男"},{"age":21,"name":"xx","sex":"女"}]
JS解释服务器发送过来的JSON字符串
服务器发送过来JSON字符串后,客户端需要对其进行解析。这时客户端需要使用eval()方法对JSON字符串进行执行!但要注意,eval()方法在执行JSON时,必须把JSON字符串使用一对圆括号括起来
var json = "{\"name\":\"zhangSan\", \"age\":\"18\", \"sex\":\"male\"}"; //手工写一段JSON数据 var person = eval("(" + json + ")"); //解析JSON为一个对象 alert(person.name + ", " + person.age + ", " + person.sex);
当然使用JQuery解析更为方便
Maven中的依赖信息
<!-- https://mvnrepository.com/artifact/net.sf.json-lib/json-lib --> <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <classifier>jdk15</classifier> <version>2.4</version> </dependency>
json-lib的依赖必须添加classifier节点,不然会下载不到