JSON对象互转工具
一、Fastjson
toJSONString(Object object)
:将Java 对象转换为 JSON
字符串。
String jsonString = JSON.toJSONString(myObject);
parseObject(String text, TypeReference<T> type)
:将JSON 字符串解析为指定类型的对象
。
MyObject myObject = JSON.parseObject(jsonString, new TypeReference<MyObject>() {});
parseArray(String text, Class<T> clazz)
:将JSON 数组字符串解析为指定类型的 List 集合
。
List<MyObject> myList = JSON.parseArray(jsonArrayString, MyObject.class);
toJSONBytes(Object object, SerializerFeature... features)
:将 Java 对象转换为 JSON 字节数组。
byte[] jsonBytes = JSON.toJSONBytes(myObject, SerializerFeature.WriteClassName);
parseObject(byte[] bytes, Class<T> clazz, Feature... features)
:将 JSON 字节数组解析为指定类型的对象。
MyObject myObject = JSON.parseObject(jsonBytes, MyObject.class);
toJSONString(Object object, SerializeConfig config, SerializerFeature... features)
:使用指定的配置和特性将 Java 对象转换为 JSON 字符串。
SerializeConfig config = new SerializeConfig();
String jsonString = JSON.toJSONString(myObject, config, SerializerFeature.WriteMapNullValue);
toJSONStringWithDateFormat(Object object, String dateFormat, SerializerFeature... features)
:将 Java 对象转换为 JSON 字符串,并指定日期格式。
String jsonString = JSON.toJSONStringWithDateFormat(myObject, "yyyy-MM-dd HH:mm:ss", SerializerFeature.WriteDateUseDateFormat);
parseObject(String text, Class<T> clazz, Feature... features)
:将 JSON 字符串解析为指定类型的对象,同时可以设置解析时使用的特性。
MyObject myObject = JSON.parseObject(jsonString, MyObject.class, Feature.IgnoreNotMatch);
toJSONObject(Map<?, ?> map)
:将 Map 对象转换为 JSON 对象。
Map<String, Object> map = new HashMap<>();
JSONObject jsonObject = (JSONObject) JSON.toJSON(map);
toJavaObject(JSON json, Class<T> clazz)
:将 JSON 对象转换为 Java 对象。
JSONObject jsonObject = JSON.parseObject(jsonString);
MyObject myObject = JSON.toJavaObject(jsonObject, MyObject.class);
二、ObjectMapper
writeValueAsString(Object value)
:将Java对象转换为JSON
字符串表示形式。
ObjectMapper objectMapper = new ObjectMapper();
String jsonString = objectMapper.writeValueAsString(myObject);
writeValue(File file, Object value)
:将Java对象转换为JSON
并写入到指定文件中。
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.writeValue(new File("data.json"), myObject);
readValue(String json, Class<T> valueType)
:将JSON字符串转换为Java对象。
ObjectMapper objectMapper = new ObjectMapper();
MyObject myObject = objectMapper.readValue(jsonString, MyObject.class);
readValue(File file, Class<T> valueType)
:从文件中读取JSON并将其转换为Java对象。
ObjectMapper objectMapper = new ObjectMapper();
MyObject myObject = objectMapper.readValue(new File("data.json"), MyObject.class);
configure(DeserializationFeature feature, boolean state)
:配置反序列化特性,例如忽略未知的属性。
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
configure(SerializationFeature feature, boolean state)
:配置序列化特性,例如美化输出。
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(SerializationFeature.INDENT_OUTPUT, true);
registerModule(Module module)
:注册自定义模块,例如Java 8日期时间模块。
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new JavaTimeModule());
三、Gson
toJson(Object src)
:将对象转换为 JSON
字符串。
Gson gson = new Gson();
String jsonString = gson.toJson(myObject);
fromJson(String json, Class<T> classOfT)
:将JSON 字符串转换为指定类型的对象
。
Gson gson = new Gson();
MyObject myObject = gson.fromJson(jsonString, MyObject.class);
fromJson(JsonElement json, Class<T> classOfT)
:将 JsonElement 对象(例如 JsonObject 或者 JsonArray)转换为指定类型的对象。
Gson gson = new Gson();
JsonElement jsonElement = gson.fromJson(jsonString, JsonElement.class);
MyObject myObject = gson.fromJson(jsonElement, MyObject.class);
toJson(JsonElement jsonElement)
:将 JsonElement 对象转换为 JSON 字符串。
Gson gson = new Gson();
JsonElement jsonElement = gson.fromJson(jsonString, JsonElement.class);
String jsonString = gson.toJson(jsonElement);
fromJson(Reader reader, Class<T> classOfT)
:从 Reader 对象中读取 JSON,并将其转换为指定类型的对象。
Gson gson = new Gson();
Reader reader = new FileReader("data.json");
MyObject myObject = gson.fromJson(reader, MyObject.class);
toJson(Object src, Type typeOfSrc)
:将对象转换为 JSON 字符串,并指定类型。
Gson gson = new Gson();
Type type = new TypeToken<List<MyObject>>() {}.getType();
String jsonString = gson.toJson(myList, type);
fromJson(String json, Type typeOfT)
:将 JSON 字符串转换为指定类型的对象,以及处理泛型类型。
Gson gson = new Gson();
Type type = new TypeToken<List<MyObject>>() {}.getType();
List<MyObject> myList = gson.fromJson(jsonString, type);
toJsonTree(Object src)
:将对象转换为 JsonElement 对象。
Gson gson = new Gson();
JsonElement jsonElement = gson.toJsonTree(myObject);
四、总结
Fastjson、ObjectMapper 和 Gson 都是流行的 JSON 解析库
,用于在 Java 中处理 JSON 数据。以下是对它们的总结:
总体而言,Fastjson 提供了极高的解析和序列化性能,适合对性能要求较高的场景。ObjectMapper(Jackson)是一个功能强大且全面的库,支持多种高级特性,适用于复杂的 JSON 处理需求。而 Gson 简单易用,适合快速开发和小型项目。根据实际需求和偏好,可以选择适合的库来处理 JSON 数据。
五、建议
建议使用FastJson的工具,因为ObjectMapper对于LocalDateTime的处理不是很优化,需要特殊的配置,直接使用MyObject myObject = JSON.parseObject(jsonString, new TypeReference<MyObject>() {});
效果更换