问题描述
如以下json解析为javaBean时,字段名interface与java关键字冲突。
{
"interface":"127.0.0.1"
}
解决办法
根据使用不同的json框架使用不同的注解使JavaBean的属性与Json字段建立映射
jackson
jackson Maven依赖
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.5.3</version>
</dependency>
javaBean
import com.fasterxml.jackson.annotation.JsonProperty;
public class Student {
// 将JSON中的name字段映射到JavaBean的trueName
@JsonProperty("name")
private String trueName;
public String getTrueName() {
return trueName;
}
public void setTrueName(String trueName) {
this.trueName = trueName;
}
}
gson
gson Maven依赖
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
</dependency>
javaBean
import com.google.gson.annotations.SerializedName;
public class Student {
// 将JSON中的name字段映射到JavaBean的trueName
@SerializedName("name")
private String trueName;
public String getTrueName() {
return trueName;
}
public void setTrueName(String trueName) {
this.trueName = trueName;
}
}
FastJson
gson Maven依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.62</version>
</dependency>
javaBean
import com.google.gson.annotations.SerializedName;
public class Student {
// 将JSON中的name字段映射到JavaBean的trueName
@JSONField(name = "name")
private String trueName;
public String getTrueName() {
return trueName;
}
public void setTrueName(String trueName) {
this.trueName = trueName;
}
}