今回はrustでJSON形式の情報を取得する方法を試してみました。
まずは使用するデータからです。
ALIS APIの"/users/{user_id}/info"を使用してユーザー情報を取得しておきます。
例として私のユーザー情報を取得するURLです。
https://alis.to/api/users/neokey/info
※"neokey"の部分を任意のユーザーにかえるとそのユーザーの情報が取得できます。
こちらのリンクをブラウザで開くと下記のJSON形式の情報が表示されます。
{"user_display_name": "naoki", "user_id": "neokey", "self_introduction": "\u307b\u307c\u8a18\u4e8b\u95b2\u89a7\u3057\u304b\u3057\u3066\u3044\u307e\u305b\u3093\u304c\u3001\u8a18\u4e8b\u3092\u66f8\u3051\u308b\u3088\u3046\u306b\u304c\u3093\u3070\u308a\u307e\u3059\u3002", "icon_image_url": "https://alis.to/d/api/info_icon/neokey/icon/04988a86-65fc-43d7-8861-d1d14d926d69.png"}
次に実際に動かすソースコードです。
rustのソースコードにJSON形式の文字列を適用したものがこちらになります。
r#" から "#の中にあるのがJSON形式の文字列です。
---------------------------------------------------------------------------------
extern crate serde;
extern crate serde_json;
use std::collections::BTreeMap;
fn main() {
let s = r#"
{
"user_display_name": "naoki",
"user_id": "neokey",
"self_introduction": "\u307b\u307c\u8a18\u4e8b\u95b2\u89a7\u3057\u304b\u3057\u3066\u3044\u307e\u305b\u3093\u304c\u3001\u8a18\u4e8b\u3092\u66f8\u3051\u308b\u3088\u3046\u306b\u304c\u3093\u3070\u308a\u307e\u3059\u3002",
"icon_image_url": "https://alis.to/d/api/info_icon/neokey/icon/04988a86-65fc-43d7-8861-d1d14d926d69.png"
}
"#;
let deserialized_map: BTreeMap<String, String> = serde_json::from_str(s).unwrap();
println!("{:?}", deserialized_map);
println!("{:?}", deserialized_map.get("user_display_name").unwrap());
}
---------------------------------------------------------------------------------
こちらのソースコードを実行すると下記の2つの情報("{}"で囲まれた文字列と"naoki"の文字列)が出力されます。
{"icon_image_url": "https://alis.to/d/api/info_icon/neokey/icon/04988a86-65fc-43d7-8861-d1d14d926d69.png", "self_introduction": "ほぼ記事閲覧しかしていませんが、記事を書けるようにがんばります。", "user_display_name": "naoki", "user_id": "neokey"}
"naoki"
実際に試してみたい方は下記の記事の「Getting started」ページの「Try Rust without installing」ボタンを押して、体験ページに行ってみてください。
体験ページでこちらのソースコードを貼って「RUN」ボタンを押してみてください。