Java Jersey/MOXy任意JSON属性

Java Jersey/MOXy任意JSON属性,java,json,jersey,moxy,Java,Json,Jersey,Moxy,我有一个带有任意JsonValue属性的bean,我需要从JSON封送/解封 public class MyBean { public String name; public JsonValue data; } 由于JsonValue是标准的javax.json.JsonValue,所以我希望MOXy能够立即封送/解封,而不是得到一个简单的字符串: { "name": "foo", "data": "{\"some\":\"json\"}" } 我期待的是: {

我有一个带有任意
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"
  }
}
解组时,
数据
变为
null
。如何使用
JsonValue
s并让MOXy按预期管理它们


(我需要坚持使用默认的Jersey/MOXy,因此不使用其他库。)

注意:这不是答案(OP的解决方案)。在读到“我需要坚持默认的Jersey/MOXy”之前,我把它打了出来。本来要改成评论,但内容太多了。我将把它留给未来的读者。

对于
javax.json
类有一个。莫西不知道如何以你所期望的方式处理它们。不看任何源代码,我猜您看到的是来自
JsonValue
实例的
toString()
的值。如果无法处理该类型,就会发生这种情况。您将得到一个
toString()
调用

即使您添加了我链接到的依赖项,您仍然存在不同提供者之间不交互的问题。需要发生的是,在MXY的中间序列化<代码> MyBea实例,如果它看到了 javax .jss< /Cord>对象,它会尝试寻找不同的提供者来处理它。它不是那样工作的。将只使用一个提供程序


我能想到的唯一解决方案是使用Jackson,而不是使用MOXy,它有一个支持
javax.json
的模块。如果您向Jackson注册该模块,它将知道如何处理
javax.json
类型,“中间序列化”。您可以看一看,它描述了您应该采取的步骤,以便与Jackson合作。

我也换成了Jackson。因为MOxy是Jersey的新默认JSON提供程序,所以我尝试坚持使用MOxy之后,我遇到了麻烦,因此遇到了更多的麻烦,直到我切换到MOxy,再也没有遇到任何问题。