JSON.simple 使用示例

JSON.simple 是轻量级的 JSON 处理库,可用于读写 JSON 文件和字符串。
编码/解码的 JSON 将完全符合 JSON 规范 (RFC4627)。

注意:这个库现在已经很老了。
Google GSON 库也是读写 JSON 的另一个不错的选择。

Java 从文件中读取 JSON

要从 file 读取 JSON,我们将使用我们在上一个示例中创建的 JSON 文件。

  • 首先,我们将创建 JSONParser实例来解析 JSON 文件。
  • 使用 FileReader读取 JSON 文件并将其传递给解析器。
  • 开始一个一个读取 JSON 对象,基于它们的类型,例如:JSONArrayJSONObject
package com.onitroad.demo.jsonsimple;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
public class ReadJSONExample 
{
	@SuppressWarnings("unchecked")
	public static void main(String[] args) 
	{
		//JSON 解析器对象,用于解析读取的文件
		JSONParser jsonParser = new JSONParser();

		try (FileReader reader = new FileReader("employees.json"))
		{
			//读取 JSON 文件
            Object obj = jsonParser.parse(reader);
            JSONArray employeeList = (JSONArray) obj;
            System.out.println(employeeList);

            // 递归解析的数组
            employeeList.forEach( emp -> parseEmployeeObject( (JSONObject) emp ) );
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ParseException e) {
            e.printStackTrace();
        }
	}
	private static void parseEmployeeObject(JSONObject employee) 
	{
		// 获取employee对象列表
		JSONObject employeeObject = (JSONObject) employee.get("employee");

		// 获取字段值 firstName
		String firstName = (String) employeeObject.get("firstName");	
		System.out.println(firstName);

		// 获取字段值 lastName
		String lastName = (String) employeeObject.get("lastName");	
		System.out.println(lastName);

		// 获取字段值 website
		String website = (String) employeeObject.get("website");	
		System.out.println(website);
	}
}

输出:

[{"employee":{"firstName":"Jamez","lastName":"Kobe","website":"onitroad.com"}},{"employee":{"firstName":"BobRobert","lastName":"JackMa","website":"example.com"}}]
Jamez
Kobe
onitroad.com
BobRobert
JackMa
example.com
www. On IT Road .com

Java将 JSON 写入文件

要将 JSON 测试写入文件,我们将主要使用两个类:

  • JSONArray: 将数据写入 json 数组。使用它的 add()方法添加类型为 JSONObject的对象。
  • JSONObject: 编写 json 对象。使用它的 put()方法来填充字段。

填充上述对象后,使用FileWriter实例写入JSON 文件。

package com.onitroad.demo.jsonsimple;
import java.io.FileWriter;
import java.io.IOException;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
public class WriteJSONExample
{
    @SuppressWarnings("unchecked")
	public static void main( String[] args )
    {
    	// 定义第1个Employee
    	JSONObject employeeDetails = new JSONObject();
    	employeeDetails.put("firstName", "Jamez");
    	employeeDetails.put("lastName", "Kobe");
    	employeeDetails.put("website", "onitroad.com");

    	JSONObject employeeObject = new JSONObject(); 
    	employeeObject.put("employee", employeeDetails);

    	// 定义第2个Employee
    	JSONObject employeeDetails2 = new JSONObject();
    	employeeDetails2.put("firstName", "BobRobert");
    	employeeDetails2.put("lastName", "JackMa");
    	employeeDetails2.put("website", "example.com");

    	JSONObject employeeObject2 = new JSONObject(); 
    	employeeObject2.put("employee", employeeDetails2);

    	// 添加到列表中
    	JSONArray employeeList = new JSONArray();
    	employeeList.add(employeeObject);
    	employeeList.add(employeeObject2);

    	// 将json数据写入文件
    	try (FileWriter file = new FileWriter("employees.json")) {
            // 可以将任何 JSONArray或者JSONObject实例写入文件
            file.write(employeeList.toJSONString()); 
            file.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

输出:

[
	{
		"employee": {
			"firstName": "Jamez",
			"lastName": "Kobe",
			"website": "onitroad.com"
		}
	},
	{
		"employee": {
			"firstName": "BobRobert",
			"lastName": "JackMa",
			"website": "example.com"
		}
	}
]

Json.simple 的特性

  • 完全符合 JSON 规范 (RFC4627)。
  • 支持编码、解码/解析和转义 JSON。
  • 通过重用 Map 和 List 接口易于使用。
  • 支持 JSON 文本的流式输出。
  • 高性能。
  • 不依赖外部库。

Json.simple Maven

使用 json-simplemaven 依赖更新 pom.xml

<dependency>
    <groupId>com.googlecode.json-simple</groupId>
    <artifactId>json-simple</artifactId>
    <version>1.1.1</version>
</dependency>
日期:2020-09-17 00:09:41 来源:oir作者:oir