我一直在尝试创建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" } }
但是,我找不到为此的标准解决方案。似乎每个人都在实现自己的包装器 解决方案。这个要求对我来说似乎是最基本的。我不敢相信这是普遍接受的解决方案,尤其是因为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注释才能使其正常工作
@XmlRootElement