使用JAXB(2.2)和Jackson(1.9.13),我无法将以下JSON对象解组到POJO
{
"userId": "foo",
"group_id": "bar"
}
请注意,有效负载同时包含一个camelCase和一个下划线字段。
xjc为我的XML模式生成的POJO如下:
public class User {
@XmlElement(required = true)
protected String userId;
@XmlElement(name = "group_id", required = true)
protected String groupId;
public String getUserId() { return userId; }
public void setUserId(String value) { this.userId = value; }
public String getGroupId() { return groupId; }
public void setGroupId(String value) { this.groupId = value; }
}
Jackson失败,但有以下例外:
org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "group_id"
<jxb:globalBindings underscoreBinding="asCharInWord"/>
public class User {
@XmlElement(required = true)
protected String userId;
@XmlElement(name = "group_id", required = true)
protected String groupId;
public String getUserId() { return userId; }
public void setUserId(String value) { this.userId = value; }
public String getGroup_Id() { return groupId; }
public void setGroup_Id(String value) { this.groupId = value; }
}
将JSONProperty
添加到常规JAXB生成的POJO中实际上是有效的
public class User {
/* ... */
@XmlElement(name = "group_id", required = true)
@JSONProperty("group_id")
protected String groupId;
/* ... */
}
但是,我的XML模式非常庞大,并且手动检测生成的类是不可行的,因为我们经常生成类。
我看到以下两个剩余的选项来处理这个问题:
我错过了显而易见的事吗?谢谢你的想法。
您是否尝试使用@JSONProperty(“group_id”)
注释用户类中的groupid
属性。这应该可以工作(测试和证明)!
如果属性上没有这样的注释,那么Jackson映射器将只考虑属性名称,否则将使用提供的值进行JSON反序列化。以下是user
类的外观:
public class User {
private String userId;
@JsonProperty("group_id")
private String groupId;
这应该映射到您的JSON
{"userId": "foo","group_id": "bar"}
问题内容: 已关闭 。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗? 更新问题,以便通过编辑此帖子以事实和引用的形式回答。 去年关闭。 为什么有人会比其他人更喜欢lodash.js或underscore.js实用程序库? Lodash似乎是下划线的替代品,下划线的使用时间更长。 我认为两者都很出色,但是我对它们的工作方式还不甚了解,无法进行有根据的比较,我想进一步了解它们之间的差异。
本文向大家介绍lodash和下划线之间有什么区别?,包括了lodash和下划线之间有什么区别?的使用技巧和注意事项,需要的朋友参考一下 lodash和underscore都是实用程序库,它们通过提供使数组,数字,对象,字符串等的使用更加容易的实用程序,使JavaScript变得更容易。这些库非常适合- 迭代数组,对象和字符串 操作和测试值 创建复合函数 它们都是功能库。Lo-Dash是Unders
rank ▲ ✰ vote url 64 365 174 322 url 在实例名字前单下划线和双下划线的含义 我想刨根问底,这到底是什么意思?解释一下他俩的区别. 单下划线 在一个类中的方法或属性用单下划线开头就是告诉别的程序这个属性或方法是私有的.然而对于这个名字来说并没有什么特别的. 引自PEP-8: 单下划线:"内部使用"的弱指示器.比如,from M import * 将不会引进用但下划
问题内容: 看起来XStream(com.thoughtworks.xstream-> xstream 1.4.2)正在以一种非常奇怪的方式处理元素和属性名称中的下划线。我需要从属性中带有下划线的客户那里获取并解析xml。这是我第一次尝试使用XStream,但由于希望避免所有丑陋的xml解析,我有些失望。 在这里,我提供了一个小的测试样本来阐明这一行为。最后一个例子显示了我的问题。 这个输出 现在
本文向大家介绍Python3中_(下划线)和__(双下划线)的用途和区别,包括了Python3中_(下划线)和__(双下划线)的用途和区别的使用技巧和注意事项,需要的朋友参考一下 在看一些Python开源代码时,经常会看到以下划线或者双下划线开头的方法或者属性,到底它们有什么作用,又有什么样的区别呢?今天我们来总结一下(注:下文中的代码在Python3下测试通过) _ 的含义 在python的类中
我想通过杰克逊库将json转换为包含camelCase密钥的地图……比如…… 从 到这个。。。 我的代码... 但这行不通...甚至其他属性命名策略也不适用于 json...如。。。 到 如何通过jackson获得camelCase地图键名...或者我应该手动循环映射和转换关键点还是有一些其他的方法??? 提前感谢...