尝试使用 serde_json 解析字符串时出现 "trailing characters" 错误

Getting "trailing characters" error when trying to parse string with serde_json

我需要转换 serde_json::Value 中的特定字符串,但在使用时出现尾随字符错误:

let new_str = "73723235c81ebbec0"
let json_value: serde_json::Value = serde_json::from_str(new_str).unwrap();

错误:

trailing characters at line 1 column 9

有没有办法将这些类型的字符串转换为 serde_json::Value?

查看 serde_json 的存储库,从他们的测试用例来看,这是预期的行为。例如,请参阅此 test case。由于您的字符串以数值开头,因此它试图解析为数字,然后在到达位置 9 的 'c' 时失败。

不要调用 from_str(),而是使用 to_value()。这将为您提供 Value 枚举的 String 变体。

let json_value: serde_json::Value = serde_json::to_value(&new_str).unwrap();

此外,如果您使用 to_value(),您可以省略变量的类型标识符,我认为这可能更符合习惯。

let json_value = serde_json::to_value(&new_str).unwrap();