当前位置:网站首页>Rust 入门指南(使用JSON)
Rust 入门指南(使用JSON)
2022-08-09 12:12:00 【InfoQ】
- 读取无类型的 JSON。
- 将 JSON 读取为强类型数据结构。
- 写 JSON 字符串。
serde
serde-json
无类型 JSON
serde_json
cargo new handle_json
serde_json = "1.0"
serde = { version = "1.0", features = ["derive"] }
from_str()
serde_json
serde_json
from_str()
use serde_json::{Value};
fn main() {
let json = r#"
{
"article": "how to work with json in Rust",
"author": "tdep",
"paragraph": [
{
"name": "untyped"
},
{
"name": "strongly typed"
},
{
"name": "writing json"
}
]
}
"#;
let parsed: Value = read_json(json);
println!("\n\n The title of the article is {}", parsed["article"])
}
fn read_json(raw_json:&str) -> Value {
let parsed: Value = serde_json::from_str(raw_json).unwrap();
return parsed
}
read_json
serde_json::from_str()
parsed["article"]
有类型的 JSON
serde
serde
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize)]
struct Paragraph {
name: String
}
#[derive(Serialize, Deserialize)]
struct Article {
article: String,
author: String,
paragraph: Vec<Paragraph>
}
fn main() {
let json = r#"
{
"article": "how to work with json in Rust",
"author": "tdep",
"paragraph": [
{
"name": "untyped"
},
{
"name": "strongly typed"
},
{
"name": "writing json"
}
]
}
"#;
let parsed: Article = read_json_typed(json);
println!("\n\n The name of the first paragraph is: {}", parsed.paragraph[0].name);
}
fn read_json_typed(raw_json: &str) -> Article {
let parsed: Article = serde_json::from_str(raw_json).unwrap();
return parsed
}
serde
Article
struct
parsed.paragraph[0].name
{
"article": "how to work with json in Rust",
"author": "tdep",
"paragraph": [
{
"name": 1
},
{
"name": "strongly typed"
},
{
"name": "writing json"
}
]
}
name
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Error("invalid type: integer `1`, expected a string", line: 8, column: 15)', src/main.rs:44:58
“article”
“name”
{
"name": "how to work with json in Rust",
"author": "tdep",
"paragraph": [
{
"name": "untyped"
},
{
"name": "strongly typed"
},
{
"name": "writing json"
}
]
}
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Error("missing field `article`", line: 17, column: 1)', src/main.rs:44:58
article
写JSON
serde_json::to_string()
Serialize
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize)]
struct Paragraph {
name: String
}
#[derive(Serialize, Deserialize)]
struct Article {
article: String,
author: String,
paragraph: Vec<Paragraph>
}
fn main() {
let article: Article = Article {
article: String::from("how to work with json in Rust"),
author: String::from("tdep"),
paragraph: vec![
Paragraph {
name: String::from("untyped")
},
Paragraph {
name: String::from("strongly typed")
},
Paragraph {
name: String::from("writing json")
}
]
};
let json = serde_json::to_string(&article).unwrap();
println!("the JSON is: {}", json)
}
Article
serde_json::to_string()
the JSON is: {"article":"how to work with json in Rust","author":"tdep","paragraph":[{"name":"untyped"},{"name":"strongly typed"},{"name":"writing json"}]}
serde_json::from_string
serde_json::to_string
serde_json::to_vec
serde_json::to_writer
to_vec
to_writer

边栏推荐
猜你喜欢
随机推荐
WebView注入Js代码实现大图自适应屏幕点击图片预览详情
AI篮球裁判火了,走步算得特别准,就问哈登慌不慌
基于CAP组件实现补偿事务与幂等性保障
The batch size does not have to be a power of 2!The latest conclusions of senior ML scholars
AI basketball referee, walking is special, ask harden care don't care
redis库没法引入
Here comes the question: Can I successfully apply for 8G memory on a machine with 4GB physical memory?
Two minutes recording can pass by second language!The volcano how to practice and become voice tone reproduction technology?
go基础之web获取参数
基于STM32+铂电阻设计的测温仪
用 API Factory 产品生成 API 文档
鹅厂机器狗花式穿越10m梅花桩:前空翻、单桩跳、起身作揖...全程不打一个趔趄...
Manchester city launch emotional intelligence scarf can be detected, give the fans
罗振宇折戟创业板/ B站回应HR称用户是Loser/ 腾讯罗技年内合推云游戏掌机...今日更多新鲜事在此...
#物联网征文#小熊派设备开发实战
World's 4th mad scientist dies on his 103rd birthday
How to upload local file trial version in binary mode in ABAP report
Intra-group reverse order adjustment of K nodes
glide工具类的简单封装
Report: The number of students who want to learn AI has increased by 200%, and there are not enough teachers