简介:
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":"王五"}]
标签:
Json
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)