首先说明一下,json-lib相较于Jackson以及GSON,性能是最低的,并且长期没有更新,所以不推荐使用。
1.Maven Dependency
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.fool.json</groupId> <artifactId>json</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>JSON</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.4</version> <classifier>jdk15</classifier> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.1</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies> </project>
先来看一个简单的DEMO
JsonlibDemo.java
package org.fool.json.jsonlib; import net.sf.json.JSONArray; import net.sf.json.JSONObject; public class JsonlibDemo { public static void main(String[] args) { String jsonContent = "{'hello':'world', 'hero':'heroine'}"; JSONObject jsonObject = JSONObject.fromObject(jsonContent); String str1 = jsonObject.getString("hello"); String str2 = jsonObject.getString("hero"); System.out.println(str1); System.out.println(str2); System.out.println("--------------------"); jsonContent = "[{'hello': 333, 'abc': false, 'xyz': {'a': 1, 'b': 'ab'}}, " + "{'hello': 555, 'abc': true, 'xyz': {'a': 3, 'b': 'ba'}}]"; JSONArray jsonArray = JSONArray.fromObject(jsonContent); for (Object object : jsonArray) { JSONObject jsonObject2 = JSONObject.fromObject(object); int value1 = jsonObject2.getInt("hello"); boolean value2 = jsonObject2.getBoolean("abc"); // String value33 = jsonObject2.getString("xyz"); JSONObject jsonObject3 = jsonObject2.getJSONObject("xyz"); int value3 = jsonObject3.getInt("a"); String value4 = jsonObject3.getString("b"); System.out.println(value1); System.out.println(value2); System.out.println(value3); System.out.println(value4); } } }
2.POJO
Person.java
package org.fool.json.jsonlib; import java.util.ArrayList; import java.util.List; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; public class Person { private String username; private String password; private int age; private String address; private List<String> list = new ArrayList<>(); public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public List<String> getList() { return list; } public void setList(List<String> list) { this.list = list; } @Override public String toString() { return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE); } }
3.JUnit Test
JsonlibTest.java
package org.fool.json.jsonlib; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.junit.Before; import org.junit.Test; public class JsonlibTest { private JSONObject jsonObject = null; private JSONArray jsonArray = null; private Person person = null; @Before public void setUp() throws Exception { person = new Person(); person.setUsername("zhangsan"); person.setPassword("123456"); person.setAddress("beijing"); person.setAge(30); person.getList().add("hello"); person.getList().add("world"); person.getList().add("Hero"); person.getList().add("Heroine"); } ...... }
testEntity2Json
... @Test public void testEntity2Json() { jsonObject = JSONObject.fromObject(person); System.out.println(jsonObject); } ...
result
{"address":"beijing","age":30,"list":["hello","world","Hero","Heroine"],"password":"123456","username":"zhangsan"}
testArray2Json
... @Test public void testArray2Json() { Person[] persons = {person, person}; // int[] i = { 8, 8, 5, 6, 7 }; jsonArray = JSONArray.fromObject(persons); System.out.println(jsonArray); } ...
result
[{"address":"beijing","age":30,"list":["hello","world","Hero","Heroine"],"password":"123456","username":"zhangsan"},{"address":"beijing","age":30,"list":["hello","world","Hero","Heroine"],"password":"123456","username":"zhangsan"}]
testList2Json
... @Test public void testList2Json() { List<Person> list = new ArrayList<>(); list.add(person); list.add(person); jsonArray = JSONArray.fromObject(list); System.out.println(jsonArray); } ...
result
[{"address":"beijing","age":30,"list":["hello","world","Hero","Heroine"],"password":"123456","username":"zhangsan"},{"address":"beijing","age":30,"list":["hello","world","Hero","Heroine"],"password":"123456","username":"zhangsan"}]
testMap2Json
... @Test public void testMap2Json() { Map<String, Person> map = new HashMap<>(); map.put("001", person); map.put("002", person); jsonObject = JSONObject.fromObject(map); System.out.println(jsonObject); } ...
result
{"001":{"address":"beijing","age":30,"list":["hello","world","Hero","Heroine"],"password":"123456","username":"zhangsan"},"002":{"address":"beijing","age":30,"list":["hello","world","Hero","Heroine"],"password":"123456","username":"zhangsan"}}