我有一个带有任意JsonValue属性的bean,我需要从JSON对其进行编组/解组。
public class MyBean {
public String name;
public JsonValue data;
}因为JsonValue是标准的javax.json.JsonValue,所以我希望MOXy能够对它进行开箱即用的编组/解组,但我得到的是一个普通的字符串:
{
"name": "foo",
"data": "{\"some\":\"json\"}"
}我所期待的是:
{
"name": "foo",
"data": {
"some": "json"
}
}解组时,data变为null。如何使用JsonValue%s并让MOXy按预期管理它们?
(我需要坚持使用默认的Jersey/MOXy,所以不使用其他库。)
发布于 2015-11-03 15:33:55
注意:这不是一个答案(OP的解决方案)。我在读 "I need to out with default Jersey/MOXy"之前就把它打出来了。要改成注释了,但是东西太多了。我将把它留给未来的读者。
有一个javax.json类的different provider。MOXy不知道如何按照您期望的方式处理它们。在不查看任何源代码的情况下,我猜您看到的是来自JsonValue实例的toString()的值。如果类型不能被处理,就会发生这种情况。你只会得到一个toString()调用。
即使您添加了我链接到的依赖项,仍然存在不同提供程序不能相互交互的问题。需要发生的是,在MOXy序列化MyBean实例的过程中,如果它看到一个javax.json对象,它会尝试寻找不同的提供程序来处理它。它并不是那样工作的。将只使用一个提供程序。
我能想到的唯一解决方案是使用杰克逊,它有一个支持javax.json的模块,而不是使用MOXy。如果您向Jackson注册了该模块,它将知道如何处理javax.json类型,即“中间序列化”。你可以看看this answer,它描述了你应该采取的步骤,让它与杰克逊一起工作。
https://stackoverflow.com/questions/33493429
复制相似问题