java - 如何使用 JETTISON 将 POJO 编码为 JSON?

标签 java json jakarta-ee marshalling jettison

我已经使用 JETTISON 将 JaxB java 对象编码为 Json。但我无法使用 JETTISON 将简单的 java 对象(其中没有注释)编码为 Json。我知道可以通过使用 GSON 或 MOXy 或其他一些提供商来做到这一点。

但是我想弄清楚“我们可以使用 JETTISON 来做到这一点吗?”。如果可以,该怎么做?

提前致谢。

最佳答案

不要浪费时间,这根本不是 Jettison 的设计初衷。可以想象,可以用 POJO 实例化一个 JSONObject 并以这种方式序列化它,但其代码存在一些问题,使得这几乎不可能:

  1. 它需要传入将包含在 JSON 中的字段名称。
  2. 它只能处理所提供对象的公共(public)属性。

更不用说它无法处理任何类型的嵌套。看看这段可爱的代码:

Class c = object.getClass();
for (int i = 0; i < names.length; i += 1) {
        try {
                String name = names[i];
                Field field = c.getField(name);
                Object value = field.get(object);
                this.put(name, value);
        } catch (Exception e) {
                /* forget about it */
        }
}

是的,这就是构造函数 JSONObject(Object, String[]) 中的代码。我确信您会看到它的问题(对通用对象的原始访问、只能访问公共(public)字段、马虎的异常处理)。总而言之 - 非常糟糕的“序列化”代码。

我知道这可能不是您想听到的,但如果您想将常规 Java 对象转换为 JSON,那么您可能需要坚持使用更通用的库之一。

关于java - 如何使用 JETTISON 将 POJO 编码为 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15426641/

相关文章:

java - Java程序中的位置计数问题

java - 当我创建一个新的异常时,我必须抛出它还是可以将它放在一个列表中?

java - 如何从 URl 下载 ZIP 文件并将其仅存储为 Zip 文件

java - 如何将条码扫描器与 Web 应用程序连接?

java - 在java中展平三层嵌套的JSON字符串

json - JSON 的选择未根据查询四舍五入

java - 简单 SSO - 使用自定义身份验证 - CAS 或一些 Oauth 或 openid 服务器?

ios - 带有参数的 NSMutableURLRequest - 无法解析响应

java - 安心服务 : status code return

java - Tibco EMS 选择器能有多先进?