目录
1.@JsonAlias
2.@JsonProperty
3.@JSONField
1.@JsonAlias
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DataCenterResult {
@JsonAlias(value = "guid")
private String id;
private String applyNumber;
private String approvalStatus;
private String message;
}
实现:
public static void main(String[] args){
ObjectMapper objectMapper = new ObjectMapper();
DataCenterResult dataCenterResult = new DataCenterResult("1","A1","1","申请单");
System.out.println("toJSON:"+objectMapper.writeValueAsString(dataCenterResult));
String str = "{\"guid\":\"3\",\"approvalStatus\":\"1\",\"message\":\"申请单\",\"applyNumber\":\"A1\"}";
System.out.println("toObject:"+objectMapper.readValue(str, DataCenterResult.class));
String str2 = "{\"id\":\"4\",\"approvalStatus\":\"1\",\"message\":\"申请单\",\"applyNumber\":\"A1\"}";
System.out.println("toObject2:"+objectMapper.readValue(str2, DataCenterResult.class));
}
结果:使用【id】、【guid】都能映射到id字段
2.@JsonProperty
@JsonProperty(value = "guid")
private String id;
实现:同@JsonAlias
结果:对象转换为JSON时,会直接使用JsonProperty中的name值作为属性名。
JSON转对象时,如JSON中属性名与JsonProperty中name值不一致时会抛出异常。
3.@JSONField
依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
@JSONField(value = "guid")
private String id;
实现:
public static void mian(String[] args){
DataCenterResult dataCenterResult = new DataCenterResult("1","A1","1","申请单");
System.out.println("toJSON:"+JSON.toJSONString(dataCenterResult));
String str = "{\"guid\":\"3\",\"approvalStatus\":\"1\",\"message\":\"申请单\",\"applyNumber\":\"A1\"}";
DataCenterResult dataCenterResult1 = JSON.parseObject(str,DataCenterResult.class);
System.out.println("toObject:"+dataCenterResult1);
String str2 = "{\"id\":\"4\",\"approvalStatus\":\"1\",\"message\":\"申请单\",\"applyNumber\":\"A1\"}";
DataCenterResult dataCenterResult2 = JSON.parseObject(str2,DataCenterResult.class);
System.out.println("toObject2:"+dataCenterResult2);
}
结果:对象转JSON时,会直接使用JSONField中的name值作为字段名。
JSON转对象时,只会映射JSONField中的name所对应的属性。