不用Gson,用java自有的api
时间: 2024-09-14 08:11:22 浏览: 37
在Java中,若不使用Gson这样的第三方库来实现JSON的序列化和反序列化,可以利用Java自有的API来完成,比如使用`javax.json`包或者利用Java 8引入的Stream API结合`org.json`库等方式。下面我将介绍使用`javax.json`和`org.json`结合Stream API的两种方法。
1. 使用`javax.json`库
Java EE提供了`javax.json` API,可以从Java EE 7开始使用,也可以单独引入作为独立的库。以下是一个使用`javax.json`进行JSON序列化和反序列化的例子:
```java
import javax.json.Json;
import javax.json.JsonObject;
import javax.json.JsonReader;
import javax.json.JsonWriter;
import java.io.StringReader;
import java.io.StringWriter;
import java.util.HashMap;
import java.util.Map;
public class JsonExample {
public static void main(String[] args) {
// 将Java对象转换为JSON字符串
Map<String, Object> map = new HashMap<>();
map.put("name", "张三");
map.put("age", 30);
StringWriter jsonStringWriter = new StringWriter();
try (JsonWriter jsonWriter = Json.createWriter(jsonStringWriter)) {
jsonWriter.writeObject(Json.createObjectBuilder(map).build());
}
String jsonString = jsonStringWriter.toString();
System.out.println("JSON string: " + jsonString);
// 从JSON字符串反序列化为Java对象
StringReader jsonStringReader = new StringReader(jsonString);
try (JsonReader jsonReader = Json.createReader(jsonStringReader)) {
JsonObject jsonObject = jsonReader.readObject();
// 将JsonObject转换回Java对象
String name = jsonObject.getString("name");
int age = jsonObject.getInt("age");
System.out.println("Name: " + name + ", Age: " + age);
}
}
}
```
2. 结合`org.json`和Stream API
`org.json`库是一个独立的库,可以手动添加到项目中。结合Java 8的Stream API,可以更方便地处理JSON。以下是一个使用`org.json`和Stream API进行操作的例子:
```java
import org.json.JSONObject;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class JsonStreamExample {
public static void main(String[] args) {
// 将Java对象转换为JSON字符串
Map<String, Object> map = Stream.of(
new AbstractMap.SimpleEntry<>("name", "李四"),
new AbstractMap.SimpleEntry<>("age", 25)
).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
JSONObject jsonObject = new JSONObject(map);
String jsonString = jsonObject.toString();
System.out.println("JSON string: " + jsonString);
// 从JSON字符串反序列化为Java对象
JSONObject jsonParsed = new JSONObject(jsonString);
String name = jsonParsed.getString("name");
int age = jsonParsed.getInt("age");
System.out.println("Name: " + name + ", Age: " + age);
}
}
```
在实际开发中,你可能会根据项目的依赖和要求选择合适的库和方法来进行JSON的处理。值得注意的是,虽然`javax.json`和`org.json`也可以作为解决方案,但它们的性能和易用性可能不如Gson等专门的JSON处理库。
阅读全文