首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jersey/MOXy任意JSON属性

Jersey/MOXy任意JSON属性
EN

Stack Overflow用户
提问于 2015-11-03 15:17:53
回答 1查看 332关注 0票数 0

我有一个带有任意JsonValue属性的bean,我需要从JSON对其进行编组/解组。

代码语言:javascript
复制
public class MyBean {
    public String name;
    public JsonValue data;
}

因为JsonValue是标准的javax.json.JsonValue,所以我希望MOXy能够对它进行开箱即用的编组/解组,但我得到的是一个普通的字符串:

代码语言:javascript
复制
{
  "name": "foo",
  "data": "{\"some\":\"json\"}"
}

我所期待的是:

代码语言:javascript
复制
{
  "name": "foo",
  "data": {
    "some": "json"
  }
}

解组时,data变为null。如何使用JsonValue%s并让MOXy按预期管理它们?

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

EN

回答 1

Stack Overflow用户

发布于 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,它描述了你应该采取的步骤,让它与杰克逊一起工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33493429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档