使用Gson将Java对象转换为JsonObject

26

我有一个Java对象,想要将其输出为JSON字符串。但是我想避免打印出Java对象中的一个属性。我知道可以使用GsonBuilder的excludeFieldsWithoutExposeAnnotation()方法来实现这一点。然而,我想尝试另一种方法,在打印JsonObject之前删除该属性。下面的代码可以实现:

Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd' 'HH:mm:ss").create();
String javaObjectString = gson.toJson(javaObject);
//javaObjectString currently include "property":"value"
JsonElement jsonElement = gson.toJsonTree(javaObjectString, javaObject.getClass());
JsonObject jsonObject = (JsonObject) jsonElement;
jsonObject.remove("property");
javaObjectString = gson.toJson(jsonObject);
//javaObjectString currently no longer includes "property":"value"

然而,这种方法感觉有点不太正式,因为我需要将Java对象输出为字符串,然后从字符串创建JsonElement,最后将JsonElement强制转换为JsonObject。

是否有更直接的方法将Java对象转换为JsonObject?

1个回答

41

例如,

Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd' 'HH:mm:ss").create();
// JSON data structure
JsonElement jsonElement = gson.toJsonTree(javaObject);
JsonObject jsonObject = (JsonObject) jsonElement;
// property removal
jsonObject.remove("property");
// serialization to String
String javaObjectString = jsonObject.toString();

如果您想跳过最后一个 String 对象的创建,您可以始终使用接受 JsonElement 的重载的 Gson#toJson 来直接将其序列化到流中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接