我尝试用serde_json::json!
创建一个JSON对象,但问题是我得到了\"
,但我不想要它们。我该如何阻止或删除它们?
fn create_cache_json(token: &str, change: &str, payload: Vec<Value>) -> Value {
let json = serde_json::json!(
{
"token": token,
"change": change,
"data": {
"payload": payload
}
});
info!("{}", json);
return json;
}
此代码返回
{
"change": "\"new\"",
"data": {
"payload":[]
},
"token": "\"2a256356\""
}
**编辑:**输入值为:
fn main() {
let token: &str = "foo".to_string();
let change: &str = "new".to_string();
let payload: Vec<serde_json::Value> = Vec::new();
create_cache_json(token, change, payload);
}
输入是已经有引号的文字。
令牌输出为:"foo"
,但它应该是foo
。使用像quote
这样的板条箱不起作用,因为值必须是字符串。对于此函数,有效负载应该为空。
1条答案
按热度按时间wz8daaqr1#
我通过将
json!
函数更改为format!
,然后从String创建一个Value
来修复它。下面是使用给定参数创建JSON对象的代码。这应该适用于每种数据类型。如果其他人需要这个:
问题中的代码已经正确,但输入字符串错误。输入字符串文字应转换为
as.str()
,而不是使用to_string()
,如下所示:x一个一个一个一个x一个一个二个x