[−][src]Crate serde_query
A query language for Serde data model.
This crate provides DeserializeQuery
trait and its derive macro for defining a query.
Example
use serde_query::{DeserializeQuery, Query}; #[derive(DeserializeQuery)] struct Data { #[query(".commit.author")] commit_author: String, #[query(".hash")] hash_value: u64, } let document = serde_json::to_string(&serde_json::json!({ "commit": { "author": "pandaman64", "date": "2020/09/03", }, "hash": 0xabcd, }))?; // You can use `Query<T>` as a `Deserialize` type for any `Deserializer` // and convert the result to the desired type using `From`/`Into`. let data: Data = serde_json::from_str::<Query<Data>>(&document)?.into(); assert_eq!(data.commit_author, "pandaman64"); assert_eq!(data.hash_value, 0xabcd);
Deriving DeserializeQuery
To declare a query, put #[derive(DeserializeQuery)]
on your type.
Each field must have a #[query(...)]
attribute for specifying
which part of the document should be retrieved, starting from the root.
#[query(...)]
syntax
serde-query
currently supports the following syntax for accessing a part of the input.
.field
for accessing a field with a namefield
of an object.
Traits
DeserializeQuery | A data structure that can be deserialized with a query. |
Type Definitions
Query | Convenient type alias for the query type. |
Derive Macros
DeserializeQuery | Derive macro for |