java - 使用 Gson 将 Java 对象转换为 JsonObject

标签 java json gson

我有一个 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?

最佳答案

您不需要中介 String。直接使用 Gson#toJsonTree(Object) 将您的 Java 对象序列化为 JsonElement。将该值转换为您期望的任何类型(JSON 对象、数组或基元),执行删除并调用其 toString() 方法以将其 JSON 表示检索为 String .

例如,

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 对象创建。

关于java - 使用 Gson 将 Java 对象转换为 JsonObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47193364/

相关文章:

java - 如何在反序列化 JSON 响应时使用 Gson 处理 NumberFormatException

java - 字符串的 Gson 数组到 JsonArray

java - Spring MVC 阻塞队列与初始化巨大的库

java - 我怎样才能让我的 BST add 方法在前两个子节点之后添加节点?

java - 在 OSGI 4.2 包中使用 JAX-WS 时出现 NoClassDefFoundError

Java游戏: ArrayList and Iterator vs.线程

ios - 使用 Swift 访问 JSON

python - 在 Python/django 中读取 json 时可能出现多少异常?

json - Julia 中的 API POST 请求

java - 使用 GSON/POJO 解析 JSON