Serialization 如何序列化枚举而不包括枚举变量的名称?
我正在尝试将枚举序列化为JSON字符串。我为我的枚举实现了文档中描述的Serialization 如何序列化枚举而不包括枚举变量的名称?,serialization,rust,serde,serde-json,Serialization,Rust,Serde,Serde Json,我正在尝试将枚举序列化为JSON字符串。我为我的枚举实现了文档中描述的Serializetrait,但我总是得到{“offset”:{“Int”:0},而不是所需的{“offset”:0} extern crate serde; extern crate serde_json; use std::collections::HashMap; use serde::ser::{Serialize, Serializer}; #[derive(Debug)] enum TValue<'a&
Serialize
trait,但我总是得到{“offset”:{“Int”:0}
,而不是所需的{“offset”:0}
extern crate serde;
extern crate serde_json;
use std::collections::HashMap;
use serde::ser::{Serialize, Serializer};
#[derive(Debug)]
enum TValue<'a> {
String(&'a str),
Int(&'a i32),
}
impl<'a> Serialize for TValue<'a> {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
match *self {
TValue::String(ref s) => serializer.serialize_newtype_variant("TValue", 0, "String", s),
TValue::Int(i) => serializer.serialize_newtype_variant("TValue", 1, "Int", &i),
}
}
}
fn main() {
let offset: i32 = 0;
let mut request_body = HashMap::new();
request_body.insert("offset", TValue::Int(&offset));
let serialized = serde_json::to_string(&request_body).unwrap();
println!("{}", serialized); // {"offset":{"Int":0}}
}
extern板条箱系列;
外部板条箱serde_json;
使用std::collections::HashMap;
使用serde::ser::{Serialize,Serializer};
#[导出(调试)]
enum TValue Serialize for TValue您可以使用将生成所需输出的属性。您不需要自己用以下方法实现序列化
:
#[derive(Debug, Serialize)]
#[serde(untagged)]
enum TValue<'a> {
String(&'a str),
Int(&'a i32),
}
它产生所需的输出:
{"offset":0}
{"offset":0}