2

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

但我想明确“我们可以使用 JETTISON 来做到这一点吗?”。如果可以,怎么做?

提前致谢。

4

2 回答 2

2

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

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

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

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[])。我相信你会看到它的问题(对通用对象的原始访问,只能访问公共字段,草率的异常处理)。总而言之 - 非常糟糕的“序列化”代码。

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

于 2013-05-15T00:23:40.203 回答
0

JAXB (JSR-222) 是按异常配置的,只需要在需要覆盖默认 XML 表示的地方进行注释(Jettison 将 XML StAX 事件转换为 JSON 或从 JSON 转换)。而不是@XmlRootElement您可以将对象包装在JAXBElement.

于 2013-03-15T11:32:54.893 回答