java - 使用 GSON 将 POJO 反序列化为 JSON 时将字段名称更改为小写?

标签 java json gson

我有一个像这样的 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_IDDateTimeStatus,并且仍然能够根据需要进行序列化。

关于java - 使用 GSON 将 POJO 反序列化为 JSON 时将字段名称更改为小写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55109640/

相关文章:

java - 如何从库添加 vaadin 主题

java - 如何制作一个像回收站一样的Android应用程序?

java - 将方法输出从 java 类移动到 HTML

json - 将 postgres db schema 转换为 json 格式

java - 使用 Jackson 将 GeoJSON 数据反序列化为对象后,如何访问它

java - 在自定义提供程序的测试中找不到 MessageBodyProvider - 手动工作

java - 将多数组json解析为POJO

java - 二维数组中从最大到最小的最长路径

python - 弹性 map 减少误差

java - 如何实现与@JsonUnwrap 等效的 Gson