使Java中的@SerializedName仅在反序列化但不序列化

时间:2016-12-02 23:18:49

标签: java json

在课堂上是否有某种方法可以从jsonField1获得一个值,但在发送时,它应该以{{1​​}}发送。

jsonField2

数据库字段的名称为Incoming json { "name":"john", "gender":"female" } Outgoing json { "firstname":"john", "gender":"female" }

2 个答案:

答案 0 :(得分:0)

我假设你在这里谈论Gson,但你没有提到这一点。 除非您想编写自己的TypeAdapter,否则需要使用两个不同的Gson实例,一个用于序列化,一个用于反序列化。 对于字段名称需要不同的字段,您可以使用FieldNamingStrategy注册GsonBuilder#setFieldNamingStrategy。此界面允许您重新映射字段名称。

答案 1 :(得分:0)

我个人没试过,但这可能有用 -

@JsonProperty(value="name",access=Access.READ_ONLY)
public void setName(String name){
  this.name = name;
}

@JsonProperty(value="firstname",access=Access.WRITE_ONLY)
public void getName(){
  return name;
}

如果上述方法不起作用,您可以使用两个属性,使用Access.READ_ONLY注释的传入属性,以及使用Access.WRITE_ONLY注释的属性。但是你的BO或getter / setter需要处理这两个属性。