【问题标题】:How to modify a string inside a serde_json::Value::String?如何修改 serde_json::Value::String 中的字符串?
【发布时间】:2020-08-16 23:05:16
【问题描述】:

我有一个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);

但是,这既是丑陋的代码,又是低效的,因为我必须克隆字符串。有没有更好的解决方案?

【问题讨论】:

    标签: json rust serde serde-json


    【解决方案1】:

    serde_json::value::Value 是一个enum,你可以只匹配它:

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

    (Permalink to the playground)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多