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节点,不然会下载不到

 

posted @ 2017-07-03 09:13  OverZeal  阅读(502)  评论(0编辑  收藏  举报