在通过 Rust 使用 Twitch API 时,为什么我得到的是数字列表而不是 JSON?
Why do I get a list of numbers instead of JSON when using the Twitch API via Rust?
我正在玩 Rust 中的 Twitch API,但我无法从响应中获得正确的 JSON 输出。
extern crate curl;
use curl::http;
fn main() {
let url = "http://api.twitch.tv/kraken/channels/twitch";
let resp = http::handle()
.get(url)
.exec().unwrap();
/* Prints StatusCode and Headers correctly. Print Body (requested json as numbers) */
println!("Code : {}\nHeaders : {:?}\nHeaders : {:?}\nBody : {:?}",
resp.get_code(), resp.get_header("content-length"), resp.get_headers(), resp.get_body());
/* Prints everything after each other and prints json correctly */
println!("{}", resp);
}
我不明白为什么我输出的是数字而不是 JSON。
输出示例 json:
[123, 34, 109, 97, 116, 117, 114, 101, 34, 58, 102, 97, 108]
正确的例子json:
{"mature":false,"status":"Twitch Weekly - 12/11/2015","broadcaster_language":"en"}
get_body
function 有签名:
pub fn get_body<'a>(&'a self) -> &'a [u8] {
也就是说,它正在返回一个字节片段,打印这样的一个片段会将它们打印为数字。这些数字是 JSON 中 (ASCII) 字符的原始值,可以通过 from_utf8
:[=22 查看为 str
(如果它们是 UTF-8 编码) =]
fn main() {
let b = [123_u8, 34, 109, 97, 116, 117, 114, 101, 34, 58, 102, 97, 108];
println!("{:?}", std::str::from_utf8(&b));
}
输出Ok("{\"mature\":fal")
。即字节是您期望的 JSON 数据的第一部分。
顺便说一句,了解函数的类型是一件非常有用的事情,您可以通过 运行ning cargo doc --open
轻松做到这一点,这将 运行 rustdoc
crate 和你所有的依赖项,然后在你的网络浏览器中打开它(如果 --open
不起作用,那么在你的网络浏览器中导航到 /path/to/project/target/doc/curl/index.html
应该也可以)。
我正在玩 Rust 中的 Twitch API,但我无法从响应中获得正确的 JSON 输出。
extern crate curl;
use curl::http;
fn main() {
let url = "http://api.twitch.tv/kraken/channels/twitch";
let resp = http::handle()
.get(url)
.exec().unwrap();
/* Prints StatusCode and Headers correctly. Print Body (requested json as numbers) */
println!("Code : {}\nHeaders : {:?}\nHeaders : {:?}\nBody : {:?}",
resp.get_code(), resp.get_header("content-length"), resp.get_headers(), resp.get_body());
/* Prints everything after each other and prints json correctly */
println!("{}", resp);
}
我不明白为什么我输出的是数字而不是 JSON。
输出示例 json:
[123, 34, 109, 97, 116, 117, 114, 101, 34, 58, 102, 97, 108]
正确的例子json:
{"mature":false,"status":"Twitch Weekly - 12/11/2015","broadcaster_language":"en"}
get_body
function 有签名:
pub fn get_body<'a>(&'a self) -> &'a [u8] {
也就是说,它正在返回一个字节片段,打印这样的一个片段会将它们打印为数字。这些数字是 JSON 中 (ASCII) 字符的原始值,可以通过 from_utf8
:[=22 查看为 str
(如果它们是 UTF-8 编码) =]
fn main() {
let b = [123_u8, 34, 109, 97, 116, 117, 114, 101, 34, 58, 102, 97, 108];
println!("{:?}", std::str::from_utf8(&b));
}
输出Ok("{\"mature\":fal")
。即字节是您期望的 JSON 数据的第一部分。
顺便说一句,了解函数的类型是一件非常有用的事情,您可以通过 运行ning cargo doc --open
轻松做到这一点,这将 运行 rustdoc
crate 和你所有的依赖项,然后在你的网络浏览器中打开它(如果 --open
不起作用,那么在你的网络浏览器中导航到 /path/to/project/target/doc/curl/index.html
应该也可以)。