【问题标题】:Serialize an object with enum member in Java?用Java中的枚举成员序列化一个对象?
【发布时间】:2023-03-10 06:05:01
【问题描述】:

如果我有一个类和枚举如下:

import java.io.Serializable;
public enum Color {
    RED,
    BLUE
}
public class Person implements Serializable {
    String name;
    int age;
    Color favColor;
}

假设我构造它并将所有成员设置为一个值,这会正确序列化和反序列化吗?如果没有,我该如何更改enum Color 以允许序列化?

【问题讨论】:

  • 这是java.lang.Enum的声明:public abstract class Enum<E extends Enum<E>> implements Comparable<E>, Serializable。那应该回答你的问题。
  • 会的。当你尝试它时发生了什么?

标签: java serialization enums


【解决方案1】:

您使用的是哪个序列化库?

如果您使用的是 Jackson,请使用以下行:

new ObjectMapper().writeValueAsString(Color.RED);

应该产生字符串“RED”。

GSON 也是如此 - 通过使用枚举的名称而不是序数值来进行序列化和反序列化:

System.out.println(gson.toJson(Color.RED));

应该打印

 {"Color": "RED"}

【讨论】:

    猜你喜欢
    • 2020-09-04
    • 2014-08-20
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    • 2020-01-12
    • 2018-11-05
    相关资源
    最近更新 更多