当前位置: 首页 > 面试题库 >

使用Jersey / JAXB / Jackson将Java.util.Map映射到JSON对象

蓟和煦
2023-03-14
问题内容

我一直在尝试创建Jersey REST Web服务。我想从Java类接收和发出JSON对象,如下所示:

@XmlRootElement
public class Book {

    public String code;

    public HashMap<String, String> names;

}

应该这样将其转换为JSON:

{
    "code": "ABC123",
    "names": {
        "de": "Die fabelhafte Welt der Amelie",
        "fr": "Le fabuleux destin d'Amelie Poulain"
    }
}

但是,我找不到为此的标准html" target="_blank">解决方案。似乎每个人都在实现自己的包装器
解决方案。这个要求对我来说似乎是最基本的。我不敢相信这是普遍接受的解决方案,尤其是因为Jersey确实是Java中更有趣的部分之一。

我还尝试了升级到Jackson 1.8,这仅给了我这一点,这是对JSON的极大混淆:

{
    "code": "ABC123",
    "names": {
        "entry": [{
            "key": "de",
            "value": "Die fabelhafte Welt der Amelie"
        },
        {
            "key": "fr",
            "value": "Le fabuleux destin d'Amelie Poulain"
        }]
    }
}

有什么建议的解决方案吗?


问题答案:

我不知道为什么这不是默认设置,这花了我一段时间,但是如果您想使用Jersey进行JSON转换,请添加

    <init-param>
        <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
        <param-value>true</param-value>
    </init-param>

到您的web.xml,所有问题都应得到解决。

PS:您还需要摆脱@XmlRootElement注释才能使其正常工作



 类似资料:
  • 假设我有这样的物体 我正在使用RestTemboard类从URL中获取json,如下所示: 之后,我想使用jackson对象映射器将json字符串转换为一个对象 将实体类作为第二个参数传递 问题是我应该如何编写ExampleJson实体来处理get-Showed json?我试过这样上课,但似乎不管用。 我得到了这样一个例外:

  • 问题内容: 我已经编写了一个JAX-RS(Jersey)REST服务,该服务接受ONIX XML格式的XML消息。通常,我已经使用xjc从给定架构生成了JAXB绑定所需的所有类。总体上有500多个类,我无法对其进行修改。 现在,当我有一个JAXB映射的对象时,我需要将其存储到数据库中。我使用mongoDb,因此消息格式应为JSON。我试图将Jackson与JAXB模块一起使用,以将JAXB对象转换

  • 我使用http://jsonlint.com来验证JSON是否有效。因此,我要么需要更改JSON或代码,要么可能两者都需要。有什么想法吗?

  • JSONMappingException:无法反序列化com.demo.json.model.abc实例 编辑:我的POJO如下所示: 有人能提出解决办法吗? 有人能帮我做这个吗?

  • 如何使用杰克逊序列化此类 Jackson没有拾取@XmlElementWrapper@XmlSee还有注释,Jackson也没有映射@XmlRootElement注释。我使用的是Jackson 1.9.0。Jackson正在将元素放入列表中,但没有映射POJO类的根元素。 这里是示例方法。 它生成的响应是'{“response”:{“status”:0,“PBBeans”:[{“user_name

  • 我使用JAVA jackson将JSON映射到JAVA pojo对象,我的JSON文件是: 在之后,我收到了以下错误消息: 不能反序列化出START_ARRAY令牌 我的POJO课程: 请问,这种JSON格式的正确java POJO是什么?谢谢