我有一个像这样的 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”,“Status”应该是“status”。使用 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 时,它不起作用,因此不确定是否还有其他方法。
最佳答案
您需要为反序列化过程提供备用名称,并为序列化提供主要(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
,并且仍然能够根据需要进行序列化。
关于java - 使用 GSON 将 POJO 反序列化为 JSON 时将字段名称更改为小写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55109640/