JSON.simple 是轻量级的 JSON 处理库,可用于读写 JSON 文件和字符串。
编码/解码的 JSON 将完全符合 JSON 规范 (RFC4627)。
注意:这个库现在已经很老了。
Google GSON 库也是读写 JSON 的另一个不错的选择。
Java 从文件中读取 JSON
要从 file 读取 JSON,我们将使用我们在上一个示例中创建的 JSON 文件。
- 首先,我们将创建
JSONParser实例来解析 JSON 文件。 - 使用
FileReader读取 JSON 文件并将其传递给解析器。 - 开始一个一个读取 JSON 对象,基于它们的类型,例如:
JSONArray和JSONObject。
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
