我希望利用Dart的新功能(实验性的enum
),而不是使用大量静态常量字符串,但如何在使用JSON时序列化/反序列化enum
变量?我已经让它以这种方式工作,但肯定有更好的解决方案:
enum Status {
none,
running,
stopped,
paused
}
Status status1 = Status.stopped;
Status status2 = Status.none;
String json = JSON.encode(status1.index);
print(json); // prints 2
int index = JSON.decode(json);
status2 = Status.values[index];
print(status2); // prints Status.stopped
如果您使用索引进行序列化,那么您就可能被锁定在将枚举保持同样顺序的情况下,因此我更喜欢使用某种字符串形式。有人解决了这个问题吗?
如果你使用枚举的索引进行序列化,就会导致你必须一直按照同样的顺序排列枚举值,所以我更倾向于使用某种字符串形式。有人解决过这个问题吗?