随笔都是学习笔记
随笔仅供参考,为避免笔记中可能出现的错误误导他人,请勿转载。

简介:

Json-lib 在通过字符串解析每一个 Json 对象时,会对当前解析位置到字符串末尾进行 substring 操作,由于 JDK7 及以上的 substring 会完整拷贝截取后的内容,所以当遇到较大的 Json 数据并且含有较多对象时,会进行大量的字符数组复制操作,导致了大量的 CPU 和内存消耗,甚至严重的 Full GC 问题。

仅限学习使用。

这里需要用到json-lib的jar包和其依赖的包:

核心类:

  - JSONObject  -- Map

public final class JSONObject 
extends AbstractJSON
implements JSON, Map, Comparable

  - JSONArray    -- List

public final class JSONArray 
extends AbstractJSON
implements JSON, List, Comparable

创建一个测试单元:

import org.junit.Test;
import net.sf.json.JSONObject;
public class Demo1 {
    /**
     * 演示json-lib小工具
     */
    
    @Test
    public void fun1() {
        JSONObject jo = new JSONObject();
        jo.put("name","zhangsan");
        jo.put("age", 18);
        jo.put("sex", "man");
        
        String s = jo.toString();
        System.out.print(s);
    }
}

输出结果:

使用JSONObject和JSONArray类中的方法:

 

 

package cn;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class Demo1 {
    /**
     * 演示json-lib小工具
     */

    @Test
    public void fun1() {
        JSONObject jo = new JSONObject();
        jo.put("name", "zhangsan");
        jo.put("age", 18);
        jo.put("sex", "man");

        String s = jo.toString();
        System.out.print(s);
    }

    /**
     * 对象转换为json串
     */
    @Test
    public void fun2() {
        // 实例化一个Person对象
        Person p = new Person("lisi", 21);
        // 把对象转换为JSONObject 类型
        JSONObject jo = JSONObject.fromObject(p);
        System.out.print(jo.toString());
    }
    /**
     * JSONArray多个对象转换
     */
    @Test
    public void fun3() {
        Person p1 = new Person("王五",12);
        Person p2 = new Person("欧赔",78);
        
        JSONArray list = new JSONArray();
        list.add(p1);
        list.add(p2);
        System.out.print(list.toString());
    }
    /**
     * 已经存在一个List,将这个List转换为Json
     */
    @Test
    public void fun4() {
        Person p1 = new Person("王五",12);
        Person p2 = new Person("欧赔",78);
        List<Person> list = new ArrayList<Person>();
        list.add(p2);
        list.add(p1);
        
        System.out.print(JSONArray.fromObject(list).toString());
    }
}

运行结果:

{"name":"zhangsan","age":18,"sex":"man"}
{"age":21,"name":"lisi"}
[{"age":12,"name":"王五"},{"age":78,"name":"欧赔"}]
[{"age":78,"name":"欧赔"},{"age":12,"name":"王五"}]

 

posted on 2022-04-03 22:05  时间完全不够用啊  阅读(94)  评论(0编辑  收藏  举报