如何修改serde_json::Value::string中的字符串



我有一个serde_json::Value,其中包含我想要修改的字符串,如果可能的话,不需要克隆该字符串。我想你会这样做:

let mut value = Value::String("Hello world".to_string());
let mut string = value.as_mut_string().unwrap();
string.push('!');

但是没有as_mut_string这样的东西。我可以这样做:

let mut value = Value::String("Hello world".to_string());
let mut string = value.as_str().unwrap().to_string();
string.push('!');
value = Value::String(string);

然而,由于我必须克隆字符串,这既是丑陋的代码,也是低效的。有更好的解决方案吗?

serde_json::value::Valueenum,您可以对其进行模式匹配:

let mut value = Value::String("Hello world".to_string());
if let Value::String(string) = &mut value {
string.push('!');
}
println!("{:?}", value);

(永久连接到操场(

相关内容

最新更新