将一个对象转换为serde_json::Value而无需进行序列化和反序列化

8

我有一个结构体,其中包含一个字段,该字段的类型为 Option<serde_json::Value>

我想要能够在那个字段中存储任何对象(即由任何结构创建的对象)。我目前使用的方法是先将对象转换为JSON字符串(使用serde_json::to_string),然后再使用serde_json::from_str将其转换为serde_json::Value

我这样做是因为我想发送不同种类的带有任意数据的JSON请求。

那么,有没有一种方法可以将任何可进行serde序列化的对象转换为serde_json::Value而不必使用serde_json::to_stringserde_json::from_str?

如果我用错了方法,请建议更好的方法,谢谢!

1个回答

10

有一个专门用于此的serde_json::value::to_value():

pub fn to_value<T>(value: T) -> Result<Value, Error>  where
    T: Serialize,

也就是说,to_value 接受任何实现了 SerializeT 类型并返回一个 Value 或错误(如果序列化失败)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接