如何在Java类变量序列化JSON时添加@别名前缀?
如何让Java类的type字段序列化后生成带@前缀的@type键名?
我需要生成符合第三方API要求的JSON数据传递给供应商,其中一个参数要求键名为@type,但现有Java Test类的type字段序列化后无法带上@前缀。以下是目标JSON示例和当前的Java类代码,求实现方法。
目标JSON示例
"Test": [ { "name": "1", "@type": "2" } ]
当前Java测试类
public class Test { private String name; private String type; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getType() { return type; } public void setType(String type) { this.type = type; } }
解决方案
1. 使用Jackson序列化库
Jackson提供了@JsonProperty注解,可直接指定字段序列化后的键名。只需在type字段上添加该注解并设置值为@type:
import com.fasterxml.jackson.annotation.JsonProperty; public class Test { private String name; @JsonProperty("@type") private String type; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getType() { return type; } public void setType(String type) { this.type = type; } }
2. 使用Gson序列化库
如果项目用的是Gson,可通过@SerializedName注解指定序列化后的键名:
import com.google.gson.annotations.SerializedName; public class Test { private String name; @SerializedName("@type") private String type; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getType() { return type; } public void setType(String type) { this.type = type; } }
以上两种方式都能让type字段在序列化后生成@type的键名,完全适配第三方API的要求。
内容的提问来源于stack exchange,提问作者cleopatez
相关产品推荐
相关产品推荐

