我已经使用 JETTISON 将 JaxB java 对象编组到 Json。但是我不能使用 JETTISON 将简单的 java 对象(其中没有注释)编组到 Json。我知道可以通过使用 GSON 或 MOXy 或其他一些提供商来做到这一点。
但我想明确“我们可以使用 JETTISON 来做到这一点吗?”。如果可以,怎么做?
提前致谢。
我已经使用 JETTISON 将 JaxB java 对象编组到 Json。但是我不能使用 JETTISON 将简单的 java 对象(其中没有注释)编组到 Json。我知道可以通过使用 GSON 或 MOXy 或其他一些提供商来做到这一点。
但我想明确“我们可以使用 JETTISON 来做到这一点吗?”。如果可以,怎么做?
提前致谢。
不要浪费你的时间,这根本不是 Jettison 的设计初衷。可以想象,JSONObject
用 POJO 实例化 a 并以这种方式序列化它是可能的,但它的代码存在一些问题,这使得这几乎是不可能的:
更不用说它不能处理任何类型的嵌套。看看这个可爱的代码:
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,那么您可能想要坚持使用更通用的库之一。
JAXB (JSR-222) 是按异常配置的,只需要在需要覆盖默认 XML 表示的地方进行注释(Jettison 将 XML StAX 事件转换为 JSON 或从 JSON 转换)。而不是@XmlRootElement
您可以将对象包装在JAXBElement
.