我已经使用 JETTISON 将 JaxB java 对象编码为 Json。但我无法使用 JETTISON 将简单的 java 对象(其中没有注释)编码为 Json。我知道可以通过使用 GSON 或 MOXy 或其他一些提供商来做到这一点。
但是我想弄清楚“我们可以使用 JETTISON 来做到这一点吗?”。如果可以,该怎么做?
提前致谢。
最佳答案
不要浪费时间,这根本不是 Jettison 的设计初衷。可以想象,可以用 POJO 实例化一个 JSONObject 并以这种方式序列化它,但其代码存在一些问题,使得这几乎不可能:
- 它需要传入将包含在 JSON 中的字段名称。
- 它只能处理所提供对象的公共(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/