#serde-json #tokio #io #serialization #values #sink #tokio-serde-json

tokio-serde-json-mirror

是 https://github.com/carllerche/tokio-serde-json 的镜像,由于某些原因,该库在 crates.io 上未更新

1 个不稳定版本

使用旧的 Rust 2015

0.1.0 2018 年 8 月 15 日

#51#sink

每月 30 次下载
用于 daemon-engine

MIT/Apache

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:

StreamSink 适配器用于使用 JSON 序列化和反序列化值。

该软件包提供了从缓冲区流或汇(Bytes)到值流或汇的适配器,通过执行 JSON 编码或解码。预期每个生成的缓冲区包含一个序列化的 JSON 值。具体实现策略由用户决定。一种选择是使用来自 tokio-iolength_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