使用Gson将Java对象转换为JsonObject

使用Gson将Java对象转换为JsonObject,java,json,gson,Java,Json,Gson,我有一个Java对象,我想将其输出为JSON字符串。但我希望避免打印出Java对象中的属性。我知道我可以使用GsonBuilder的excludeFieldsWithoutExposeAnnotation()方法来实现这一点。但是,我想我应该尝试另一种方法,在打印之前从JsonObject中删除属性。以下代码起作用: Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd' 'HH:mm:ss").create(); String java

我有一个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还有更直接的方法吗?

您不需要中介
字符串。使用
Gson\toJsonTree(object)
直接将Java对象序列化为
jsonement
。将该值转换为您期望的任何类型(JSON对象、数组或原语),执行删除操作并调用其
toString()
方法以将其JSON表示形式检索为
字符串

比如说,

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();

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

只需
jsonObject=(jsonObject)Gson.toJsonTree(javaObject)
,删除,然后
javaObjectString=jsonObject.toString()