【发布时间】:2021-11-17 13:39:18
【问题描述】:
我正在使用base64::decode 解码原始字节并得到类似"{\"foo\":1,\"bar\":\"first\"}" 的内容。然而,serde_json 想要一个类似{"foo":1,"bar":"first"}的字符串
所以我需要转换
let raw = r#""{\"foo\":1,\"bar\":\"first\"}""#.to_string();
进入
let converted = "{\"foo\":1,\"bar\":\"first\"}".to_string();
实际上这是可行的:
fn format_string(inp : &str) -> String {
let temp = inp.to_string().replace("\\\"", "\"");
if temp.len() < 3 {
return temp
}
temp[1..temp.len()-1].to_string()
}
有没有更好的解决方案?
【问题讨论】:
-
您的“原始”字符串看起来像一个 JSON 字符串,因此您应该能够对其进行两次反序列化——第一次为
String,第二次为您的最终数据结构。跨度> -
是的,双重反序列化有效,谢谢!
-
base 64 数据从何而来?修复它的创建可能更有意义,以便它直接包含 JSON 数据,而不是被 JSON 编码两次。
-
我不确定双重反序列化是否更好