【问题标题】:Jettison and JAXB Automatically Changes Data Type in JSON ResponseJettison 和 JAXB 自动更改 JSON 响应中的数据类型
【发布时间】:2011-06-12 18:58:21
【问题描述】:

我正在使用带有 JAXB 注释的 Resteasy 2.0.1.GA 和 Resteasy-jettison-provider-1.2.GA,只要我有一个包含所有数字的字符串属性(即String groupName="1111";),JSON 响应就会显示它通过删除双引号作为数字。如果我将其更改为String groupName="oneoneoneoneone";,JSON 响应会将其视为 Sting 并在响应中保留双引号。无论如何让 Jettison 提供者根据其类型而不是其值来严格解释要响应的数据?

【问题讨论】:

    标签: java json jaxb resteasy jettison


    【解决方案1】:

    这似乎是 Jettison 的一个隐含“特征”;它试图反省实际数据并找出最适合的类型。我以前也遇到过,很气人。

    我强烈建议完全放弃 Jettison,而改用 RestEasy Jackson supportJackson 是一个质量更好的库,并且不受这些“有用”功能的影响。它也像 Jettison 一样 supports JAXB annotations

    【讨论】:

    • 感谢您的回复。我已经尝试过 Jackson,但问题是它对我们来说是一个重大的重写,因为我们非常依赖我们的 JAXB 注释。除了切换供应商之外,您知道解决此问题的方法吗?
    • @Colin:我刚才说 Jackson 也支持 JAXB 注释。
    • Skaffman,我尝试按照规范 (wiki.fasterxml.com/JacksonJAXBAnnotations) 注册一个 JAXB 注释内省器,但我不知道如何将其动态插入到我的 restful 框架 (RESTEasy) 中。您如何注册它以使其在响应对象的序列化期间被调用?这绝对是我方面的一个知识差距,但我在集成方面找不到太多帮助。
    • @Colin:我也没有,恐怕我不使用 resteasy。您可能想尝试其中一个或两个的邮件列表。
    【解决方案2】:

    在服务器启动时设置以下系统属性的侦听器。

    System.setProperty("jettison.mapped.typeconverter.class"
                      ,"org.codehaus.jettison.mapped.SimpleConverter");
    

    一旦属性设置为simpleConverter,那么无论数据类型是字符串还是整数,jettison 始终将值输出为字符串。

    【讨论】:

      猜你喜欢
      • 2011-07-02
      • 2021-12-07
      • 2015-09-12
      • 2013-05-12
      • 2022-07-07
      • 2017-11-29
      • 2015-12-05
      • 2021-08-26
      • 1970-01-01
      相关资源
      最近更新 更多