我有一个具有任意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
并让MOXy按预期管理它们?
(我需要坚持使用默认的Jersey / MOXy,所以不要使用其他库。)
答案 0 :(得分:0)
注意:这不是答案(OP的解决方案)。我在阅读&#34之前输入了它;我需要坚持使用默认的Jersey / MOXy" 。会改变评论,但有太多的东西。我将把它留给未来的读者。
javax.json
类有一个different provider。 MOXy并不知道如何以您期望的方式处理它们。在没有查看任何源代码的情况下,我猜你所看到的是来自toString()
实例的JsonValue
的值。如果无法处理类型,将会发生这种情况。您只需拨打toString()
电话。
即使您添加了我链接的依赖项,您仍然会遇到不同提供商之间互不干扰的问题。需要做的是,在MOXy序列化MyBean
实例的过程中,如果它看到javax.json
对象,它会尝试寻找不同的提供程序来处理它。它只是没有这样的工作。只使用一个提供商。
我能想到的唯一解决方案是使用Jackson,而不是使用MOXy,它有一个支持javax.json
的模块。如果您向杰克逊注册该模块,它将知道如何处理javax.json
类型,"中序列化"。您可以查看this answer,其中介绍了使其与杰克逊合作的步骤。