Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ObjectMapper的默认行为_Java_Json_Objectmapper - Fatal编程技术网

Java ObjectMapper的默认行为

Java ObjectMapper的默认行为,java,json,objectmapper,Java,Json,Objectmapper,我有一个class对象,我正在使用jacksonObjectMapper将其转换为json。 转换后,它为每个变量创建两个条目。这种行为正常吗?如果正常,有人能给我解释一下吗 我目前的理解是,对象映射器使用@JsonProperty注释来创建字段名 @数据 @实体 @表(name=“oracle\u blob”) 公共类OracleBlob{ @身份证 @GenericGenerator(name=“native”,strategy=“native”) @GeneratedValue(策略=Ge

我有一个class对象,我正在使用jackson
ObjectMapper
将其转换为json。 转换后,它为每个变量创建两个条目。这种行为正常吗?如果正常,有人能给我解释一下吗

我目前的理解是,对象映射器使用
@JsonProperty
注释来创建字段名

@数据
@实体
@表(name=“oracle\u blob”)
公共类OracleBlob{
@身份证
@GenericGenerator(name=“native”,strategy=“native”)
@GeneratedValue(策略=GenerationType.AUTO,generator=“native”)
@列(name=“id”)
@杰索尼奥雷
私人长id;
@列(name=“来源\实体”)
@JsonProperty(“源实体”)
私有字符串源实体;
@列(name=“接口名称”)
@JsonProperty(“接口名称”)
私有字符串接口名称;
@列(name=“批次id”)
@JsonProperty(“批次Id”)
私有字符串批处理Id;
@列(name=“message”)
@JsonProperty(“消息内容”)
私有字符串消息内容;
}
输出

{
“源实体”:“测试源2”,
“接口名称”:“测试接口名称2”,
“批次Id”:“testbatchId2”,
“消息内容”:“测试消息2”,
“源实体”:“测试源2”,
“接口名称”:“测试接口名称2”,
“批次Id”:“testbatchId2”,
“消息内容”:“测试消息2”
}

不要使用大写字母作为字段名,因为Jackson将解析getter(在您的示例中由lombok生成)并基于
getInterface\u name()
+一个字段作为
@JsonProperty(“interface\u name”)
搜索
interface\u name

Jackson 2.5添加了MapperFeature.USE_STD_BEAN_命名,启用了所需的get处理。由于向后兼容的原因,默认情况下禁用该选项。 另一种选择(也是使用早期版本时唯一的选择)是使用@JsonProperty注释getter;如果是这样,场和getter将正确耦合


请参见此处的完整答案:

尝试删除@JsonProperty注释。