【问题标题】:How do I serialize an enum to a number and deserialize from a number via serde-json?如何将枚举序列化为数字并通过 serde-json 从数字反序列化?
【发布时间】:2020-09-24 10:06:51
【问题描述】:
struct ResponseData<T> {
    success : bool,
    res_data : T,
}
struct FooRes {
   result:RESULT,
}
num RESULT {
    RESULT_OK = 0,
    RESULT_NG = 1,
}
fn test(){

let s = ResponseData::<FooRes>{
    success : true,
    res_data : FooRes{
        result:RESULT::RESULT_OK,
    },
};
    
let st = serde_json::to_string(&s).unwrap();
println!("json={}",st);

json={"success":true,"resData":{"result":"RESULT_OK"}}

在将枚举序列化为数值时,我需要结果为{"result":0},而不是{"result":"RESULT_OK"}, 和{"success":true,"resData":{"result":0}} 反序列化为枚举成员result

struct FooRes {
   result:RESULT,
}

我该怎么做?

【问题讨论】:

  • 欢迎来到 Stack Overflow。请花一些额外的时间来确保您的问题包含minimal reproducible example,并且问题清晰且呈现良好(How to Ask)。该代码格式不正确,甚至无法编译。
  • Enum representations 上的 serde 主页可能会让您了解如何在 serde 中使用枚举类型。

标签: json rust serde


【解决方案1】:

谢谢,我解决了

https://serde.rs/enum-number.html

正确 #[derive(Serialize_repr, Deserialize_repr, PartialEq, Debug)] 不是 #[derive(调试、序列化、反序列化)]

在枚举,tnx

【讨论】:

    猜你喜欢
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    • 2015-11-11
    • 1970-01-01
    • 2020-05-20
    • 2018-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多