我有一个以 JSON 格式返回请求的服务器。当尝试解析数据时,我总是收到“尾随字符”错误。仅当从邮递员获取 JSON 时才会发生这种情况
let type_of_request = parsed_request[1];
let content_of_msg: Vec<&str> = msg_from_client.split("\r\n\r\n").collect();
println!("{}", content_of_msg[1]);
// Will print "{"username":"user","password":"password","email":"dwadwad"}"
let res: serde_json::Value = serde_json::from_str(content_of_msg[1]).unwrap();
println!("The username is: {}", res["username"]);
Run Code Online (Sandbox Code Playgroud)
从邮递员获取数据时会发生这种情况:
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Error("trailing characters", line: 1, column: 60)', src\libcore\result.rs:997:5
Run Code Online (Sandbox Code Playgroud)
但是当 Rust 中有字符串时:
let j = "{\"username\":\"user\",\"password\":\"password\",\"email\":\"dwadwad\"}";
let res: serde_json::Value = serde_json::from_str(j).unwrap();
println!("The username is: {}", res["username"]);
Run Code Online (Sandbox Code Playgroud)
它就像一个魅力:
The username is: "user"
Run Code Online (Sandbox Code Playgroud)
编辑:显然,当我将消息读入缓冲区并将其转换为字符串时,它保存了缓冲区具有的所有 NULL 字符,这些字符当然是尾随字符。