[英]How to map JSON field names to different object field names?
以下jax-b注解在Jackson json注解中的equiv方式是什么?
我需要生成 json 而不是 xml,并且需要知道在 jax-b 中等效表示的常规 jackson 注释。
如果 json/xml 元素名称是 java 保留字,如“ new
”、“ public
”、“ static
”等,这些特性尤其重要。
因此我们必须将 POJO 字段分别命名为“_new_”、“_public_”、“_static_”等,
但在生成的 XML(和 json)元素中使用 jax-b 注释将它们重命名回“new”、“public”、“static”等。
重命名字段
@XmlAccessorType(XmlAccessType.FIELD)
public class Person{
@XmlElement(required = true)
protected String name;
@XmlElement(required = true)
protected String address;
@XmlElement(name = "contractor")
protected boolean _restricted_ ;
@XmlElement(name = "new")
protected boolean _new_ ;
}
重定向到使用属性 getter (我认为这是在 jax-b 中完成的)
@XmlAccessorType(XmlAccessType.PROPERTY)
public class Person{
protected String name;
protected String address;
protected boolean _restricted_ ;
protected boolean _new_ ;
@XmlElement(required = true)
protected String getName() {return name;}
@XmlElement(required = true)
protected String getAddress() {return address;}
@XmlElement(name = "contractor")
protected boolean getRestricted() {return _restricted_;}
@XmlElement(name = "new")
protected boolean getNew(){return _new_;}
}
可能有点晚了,但无论如何..
你可以重命名一个属性只是添加
@JsonProperty("contractor")
默认情况下,Jackson 使用 getter 和 setter 来序列化和反序列化。
更多详细信息: http : //wiki.fasterxml.com/JacksonFAQ
举个例子,你也可以在 getter 和 setter 中使用它来将它重命名为不同的字段
public class Sample {
private String fruit;
@JsonProperty("get_apple")
public void setFruit(String fruit) {
this.fruit = fruit;
}
@JsonProperty("send_apple")
public String getFruit() {
return fruit;
}
}
请注意,正确的 JavaEE API 是使用javax.json.bind.annotation.JsonbProperty
注释。 当然,Jackson 和其他人只是 JSON Binding API 的一些实现,他们很可能会遵守这一点。
如果您不使用 Jackson 仍想重命名属性,您可以使用 @SerializedName("your_original_key_name")
我的 JSON 数据:
{
"default": "0"
}
如您所知,我们从不使用预定义的关键字作为变量名,因此解决方案是:
@SerializedName("default")
private String default_value;
public String getDefault_value() {
return default_value;
}
public void setDefault_value(String default_value) {
this.default_value = default_value;
}
这就是您现在要做的所有事情,值来自键“default”,您可以使用“default_value”将它与 getter 和 setter 一起使用
在这种情况下(Predifind 关键字作为 Json 键名)或在任何其他您想要更改变量名以从原始键名获取数据的情况下,这是最简单的方法。
我只是重申@Himanshu 的回答,
Java Bean属性字段
@SerializedName("TCS Rate")
private String TCSRate;
在这里我们需要这个导入
import com.google.gson.annotations.SerializedName;
Maven 依赖
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.9.0</version>
</dependency>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.