我有一个像这样的POJO类。我首先将我的JSON反序列化为POJO以下。.
public class Segment implements Serializable {
@SerializedName("Segment_ID")
@Expose
private String segmentID;
@SerializedName("Status")
@Expose
private String status;
@SerializedName("DateTime")
@Expose
private String dateTime;
private final static long serialVersionUID = -1607283459113364249L;
...
...
...
// constructors
// setters
// getters
// toString method
}
现在,我正在使用Gson将POJO序列化为JSON,并且工作正常:
Gson gson = new GsonBuilder().create();
String json = gson.toJson(user.getSegments());
System.out.println(json);
我得到这样打印的json很好:
[{"Segment_ID":"543211","Status":"1","DateTime":"TueDec2618:47:09UTC2017"},{"Segment_ID":"9998877","Status":"1","DateTime":"TueDec2618:47:09UTC2017"},{"Segment_ID":"121332121","Status":"1","DateTime":"TueDec2618:47:09UTC2017"}]
现在反序列化时有什么方法可以将“ Segment_ID”转换为所有小写字母吗?我的意思是“ Segment_ID”应为“ segment_id”,“状态”应为“状态”。使用gson可以做到吗?因此应该改为这样打印。
[{"segment_id":"543211","status":"1","datetime":"TueDec2618:47:09UTC2017"},{"segment_id":"9998877","status":"1","datetime":"TueDec2618:47:09UTC2017"},{"segment_id":"121332121","status":"1","datetime":"TueDec2618:47:09UTC2017"}]
如果我更改“ SerializedName”,然后在将JSON反序列化为POJO时无法正常工作,因此不确定是否还有其他方法。
答案 0 :(得分:1)
您需要为反序列化过程提供替代名称,并为序列化提供主(value
属性)。
class Segment {
@SerializedName(value = "segment_id", alternate = {"Segment_ID"})
@Expose
private String segmentID;
@SerializedName(value = "status", alternate = {"Status"})
@Expose
private String status;
@SerializedName(value = "datetime", alternate = {"DateTime"})
@Expose
private String dateTime;
}
现在,您可以反序列化字段:Segment_ID
,DateTime
,Status
,并且仍然能够根据需要进行序列化。