1 个不稳定版本
使用旧的 Rust 2015
0.1.0 | 2018 年 8 月 15 日 |
---|
#51 在 #sink
每月 30 次下载
用于 daemon-engine
10KB
130 行
Tokio / Serde 对 JSON 的绑定
使用 serde 实现Tokio JSON传输的实用工具,用于JSON序列化和反序列化帧值。
用法
要使用 tokio-serde-json
,首先将以下内容添加到您的 Cargo.toml
[dependencies]
tokio-serde-json = { git = "https://github.com/carllerche/tokio-serde-json" }
然后,将以下内容添加到您的包中
extern crate tokio_serde_json;
use tokio_serde_json::{ReadJson, WriteJson};
许可证
tokio-serde-json
主要在 MIT 许可证和 Apache 许可证(版本 2.0)的条款下分发,部分内容受各种类似 BSD 许可证的覆盖。
请参阅 LICENSE-APACHE 和 LICENSE-MIT 以获取详细信息。
lib.rs
:
Stream
和 Sink
适配器用于使用 JSON 序列化和反序列化值。
该软件包提供了从缓冲区流或汇(Bytes
)到值流或汇的适配器,通过执行 JSON 编码或解码。预期每个生成的缓冲区包含一个序列化的 JSON 值。具体实现策略由用户决定。一种选择是使用来自 tokio-io 的 length_delimited
。
示例
use futures::{Future, Sink};
use tokio_core::reactor::Core;
use tokio_core::net::TcpStream;
// Use length delimited frames
use tokio_io::codec::length_delimited;
use tokio_serde_json::WriteJson;
// Bind a server socket
let socket = TcpStream::connect(
&"127.0.0.1:17653".parse().unwrap(),
&handle);
socket.and_then(|socket| {
// Delimit frames using a length header
let length_delimited = length_delimited::FramedWrite::new(socket);
// Serialize frames with JSON
let serialized = WriteJson::new(length_delimited);
// Send the value
serialized.send(json!({
"name": "John Doe",
"age": 43,
"phones": [
"+44 1234567",
"+44 2345678"
]
}))
})
有关完整的工作服务器和客户端示例,请参阅 examples 目录。
依赖关系
~0.7–1.2MB
~24K SLoC