2016-08-28 10:39:53 -05:00
|
|
|
# Serde   [![Build Status](https://api.travis-ci.org/serde-rs/serde.svg?branch=master)](https://travis-ci.org/serde-rs/serde) [![Latest Version](https://img.shields.io/crates/v/serde.svg)](https://crates.io/crates/serde)
|
2014-09-07 03:30:58 -05:00
|
|
|
|
2016-08-18 00:01:48 -05:00
|
|
|
**Serde is a framework for *ser*ializing and *de*serializing Rust data structures efficiently and generically.**
|
2014-09-07 03:30:58 -05:00
|
|
|
|
2016-08-18 00:01:48 -05:00
|
|
|
---
|
2015-04-01 00:16:15 -05:00
|
|
|
|
2016-08-18 00:01:48 -05:00
|
|
|
You may be looking for:
|
2015-08-09 18:37:01 -05:00
|
|
|
|
2016-08-18 16:08:05 -05:00
|
|
|
- [An overview of Serde](https://serde.rs/)
|
|
|
|
- [Data formats supported by Serde](https://serde.rs/#data-formats)
|
|
|
|
- [Setting up `#[derive(Serialize, Deserialize)]`](https://serde.rs/codegen.html)
|
|
|
|
- [Examples](https://serde.rs/examples.html)
|
|
|
|
- [API documentation](https://docs.serde.rs/serde/)
|
2015-08-09 18:37:01 -05:00
|
|
|
|
2016-08-18 00:01:48 -05:00
|
|
|
## Serde in action
|
2016-07-07 16:31:24 -05:00
|
|
|
|
|
|
|
```rust
|
2016-09-29 11:21:01 -05:00
|
|
|
#![feature(rustc_macro)]
|
|
|
|
|
|
|
|
#[macro_use]
|
|
|
|
extern crate serde_derive;
|
2016-07-07 16:31:24 -05:00
|
|
|
|
|
|
|
extern crate serde_json;
|
|
|
|
|
|
|
|
#[derive(Serialize, Deserialize, Debug)]
|
|
|
|
struct Point {
|
|
|
|
x: i32,
|
|
|
|
y: i32,
|
|
|
|
}
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
let point = Point { x: 1, y: 2 };
|
|
|
|
|
2016-08-18 00:01:48 -05:00
|
|
|
// Convert the Point to a JSON string.
|
2016-07-07 16:31:24 -05:00
|
|
|
let serialized = serde_json::to_string(&point).unwrap();
|
2015-04-01 23:59:37 -05:00
|
|
|
|
2016-08-18 00:01:48 -05:00
|
|
|
// Prints serialized = {"x":1,"y":2}
|
|
|
|
println!("serialized = {}", serialized);
|
2016-02-26 13:03:06 -06:00
|
|
|
|
2016-08-18 00:01:48 -05:00
|
|
|
// Convert the JSON string back to a Point.
|
2016-02-26 13:03:06 -06:00
|
|
|
let deserialized: Point = serde_json::from_str(&serialized).unwrap();
|
|
|
|
|
2016-08-18 00:01:48 -05:00
|
|
|
// Prints deserialized = Point { x: 1, y: 2 }
|
|
|
|
println!("deserialized = {:?}", deserialized);
|
2016-02-26 13:03:06 -06:00
|
|
|
}
|
2015-04-01 00:16:15 -05:00
|
|
|
```
|
2015-08-11 09:00:59 -05:00
|
|
|
|
2016-08-18 09:56:41 -05:00
|
|
|
## Getting help
|
|
|
|
|
|
|
|
Serde developers live in the #serde channel on
|
|
|
|
[`irc.mozilla.org`](https://wiki.mozilla.org/IRC). The #rust channel is also a
|
|
|
|
good resource with generally faster response time but less specific knowledge
|
|
|
|
about Serde. If IRC is not your thing, we are happy to respond to [GitHub
|
|
|
|
issues](https://github.com/serde-rs/serde/issues/new) as well.
|
|
|
|
|
2016-08-18 00:01:48 -05:00
|
|
|
## License
|
2016-05-01 08:30:35 -05:00
|
|
|
|
2016-08-18 00:01:48 -05:00
|
|
|
Serde is licensed under either of
|
2016-05-01 08:30:35 -05:00
|
|
|
|
2016-08-18 00:01:48 -05:00
|
|
|
* Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0)
|
|
|
|
* MIT license ([LICENSE-MIT](LICENSE-MIT) or
|
|
|
|
http://opensource.org/licenses/MIT)
|
2016-05-01 08:30:35 -05:00
|
|
|
|
2016-08-18 00:01:48 -05:00
|
|
|
at your option.
|
2016-05-01 08:30:35 -05:00
|
|
|
|
2016-08-18 00:01:48 -05:00
|
|
|
### Contribution
|
2015-08-11 09:00:59 -05:00
|
|
|
|
2016-08-18 00:01:48 -05:00
|
|
|
Unless you explicitly state otherwise, any contribution intentionally submitted
|
|
|
|
for inclusion in Serde by you, as defined in the Apache-2.0 license, shall be
|
|
|
|
dual licensed as above, without any additional terms or conditions.
|