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