4个版本 (破坏性更新)
0.3.0 | 2019年10月7日 |
---|---|
0.2.0 | 2018年11月9日 |
0.1.0 | 2018年8月16日 |
0.0.0 | 2017年3月14日 |
#202 in #transport
每月337次下载
用于 2 crates
12KB
130 行
Tokio / Serde的JSON绑定
使用Serde进行JSON序列化和反序列化帧值,轻松实现Tokio JSON传输所需的实用工具。
用法
要使用tokio-serde-json
,首先在您的Cargo.toml
中添加以下内容:
[dependencies]
tokio-serde-json = "0.2"
然后,在您的crate中添加以下内容:
extern crate tokio_serde_json;
use tokio_serde_json::{ReadJson, WriteJson};
许可证
本项目采用MIT许可证。
贡献
除非您明确说明,否则您提交给tower-web
的任何贡献都应按MIT许可证授权,无需任何额外条款或条件。
lib.rs
:
Stream
和 Sink
适配器,用于使用JSON序列化和反序列化值。
此crate提供从缓冲区流或流的适配器,将缓冲区流或流转换为值流,通过执行JSON编码或解码来实现。预期每个产生的缓冲区包含一个序列化的JSON值。具体的实现策略由用户决定。一种选择是使用length_delimited
从tokio-io。
示例
use futures::prelude::*;
use serde_json::json;
use tokio::{codec::{FramedWrite, LengthDelimitedCodec}, net::TcpStream};
use tokio_serde_json::WriteJson;
#[tokio::main]
async fn main() {
// Bind a server socket
let socket = TcpStream::connect("127.0.0.1:17653")
.await
.unwrap();
// Delimit frames using a length header
let length_delimited = FramedWrite::new(socket, LengthDelimitedCodec::new());
// Serialize frames with JSON
let mut serialized = WriteJson::new(length_delimited);
// Send the value
serialized.send(json!({
"name": "John Doe",
"age": 43,
"phones": [
"+44 1234567",
"+44 2345678"
]
})).await.unwrap()
}
有关完整的工作服务器和客户端示例,请参阅示例目录。
依赖关系
~3.5MB
~74K SLoC