4 releases (breaking)
0.3.0 | Oct 7, 2019 |
---|---|
0.2.0 | Nov 9, 2018 |
0.1.0 | Aug 16, 2018 |
0.0.0 | Mar 14, 2017 |
#207 in #transport
50 downloads per month
Used in 2 crates
12KB
130 lines
Tokio / Serde bindings for JSON
Utilities needed to easily implement a Tokio JSON transport using serde for JSON serialization and deserialization of frame values.
Usage
To use tokio-serde-json
, first add this to your Cargo.toml
:
[dependencies]
tokio-serde-json = "0.2"
Next, add this to your crate:
extern crate tokio_serde_json;
use tokio_serde_json::{ReadJson, WriteJson};
License
This project is licensed under the MIT license.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in tower-web
by you, shall be licensed as MIT, without any
additional terms or conditions.
lib.rs
:
Stream
and Sink
adaptors for serializing and deserializing values using
JSON.
This crate provides adaptors for going from a stream or sink of buffers
(Bytes
) to a stream or sink of values by performing JSON encoding or
decoding. It is expected that each yielded buffer contains a single
serialized JSON value. The specific strategy by which this is done is left
up to the user. One option is to use using length_delimited
from
tokio-io.
Examples
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()
}
For a full working server and client example, see the examples directory.
Dependencies
~4MB
~79K SLoC