使用Gson将Java对象转换为JsonObject
我有一个Java对象,我想将其输出为JSON字符串。但我希望避免打印出Java对象中的属性。我知道我可以使用GsonBuilder的excludeFieldsWithoutExposeAnnotation()方法来实现这一点。但是,我想我应该尝试另一种方法,在打印之前从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
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()
。