如何将 &str 转换为 JSON 响应?

JNP*_*JNP 4 json rust

我有一个&str

{"index":0,"name":"AB/CDE/FG/402/test_int4","sts":"on","time":"2021-06-05 03:28:24.044284300 UTC","value":8}
Run Code Online (Sandbox Code Playgroud)

我怎样才能将它转换为 JSON?

{
"index": 0,
"name": "AB/CDE/FG/402/test_int4",
"sts": "on",
"time": "2021-06-05 03:28:24.044284300 UTC",
"value": 8 
}
Run Code Online (Sandbox Code Playgroud)

有没有类似 Python 的json.loads()方法可用或者可以在 Rust 中完成类似的操作?

kmd*_*eko 9

这里有一个误解。JSON 是一种序列化格式,它始终是一个字符串。您的两个块都是 JSON 并且功能相同。什么json.loads()是反序列化成一个可以本机访问和操作的

serde_json::Value如果您希望通用地使用此 JSON,您可能需要使用 a 。

use serde_json::Value;

fn main() {
    let input = r#"{"index":0,"name":"AB/CDE/FG/402/test_int4","sts":"on","time":"2021-06-05 03:28:24.044284300 UTC","value":8}"#;
    let mut object: Value = serde_json::from_str(input).unwrap();
    
    if let Some(name) = object.get_mut("name") {
        *name = "new name".into();
    }
    
    println!("{}", object);
}
Run Code Online (Sandbox Code Playgroud)
use serde_json::Value;

fn main() {
    let input = r#"{"index":0,"name":"AB/CDE/FG/402/test_int4","sts":"on","time":"2021-06-05 03:28:24.044284300 UTC","value":8}"#;
    let mut object: Value = serde_json::from_str(input).unwrap();
    
    if let Some(name) = object.get_mut("name") {
        *name = "new name".into();
    }
    
    println!("{}", object);
}
Run Code Online (Sandbox Code Playgroud)

操场

或者,通常创建一个反映 JSON 预期内容的结构,并通过以下方式反序列化为该类型serde

use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize, Debug)]
struct Data {
    index: i32,
    name: String,
    sts: String,
    time: String,
    value: i32
}

fn main() {
    let input = r#"{"index":0,"name":"AB/CDE/FG/402/test_int4","sts":"on","time":"2021-06-05 03:28:24.044284300 UTC","value":8}"#;
    let mut object: Data = serde_json::from_str(input).unwrap();
    
    object.name = "new name".to_string();
    
    println!("{:#?}", object);
}
Run Code Online (Sandbox Code Playgroud)
{"index":0,"name":"new name","sts":"on","time":"2021-06-05 03:28:24.044284300 UTC","value":8}
Run Code Online (Sandbox Code Playgroud)

操场