# wson
[JSON](https://www.json.org/json-en.html) parser made with [nom](https://docs.rs/nom/latest/nom/).
## Usage
``` rust
let value = parse(
"{\"menu\": {
\"id\": \"file\",
\"value\": \"File\",
\"popup\": {
\"menuitem\": [
{\"value\": \"New\", \"onclick\": \"CreateNewDoc()\"},
{\"value\": \"Open\", \"onclick\": \"OpenDoc()\"},
{\"value\": \"Close\", \"onclick\": \"CloseDoc()\"}
]
}
}}",
)?;
let expected = Value::Object(HashMap::from([(
"menu".to_string(),
Value::Object(HashMap::from([
("id".to_string(), Value::String("file".to_string())),
("value".to_string(), Value::String("File".to_string())),
(
"popup".to_string(),
Value::Object(HashMap::from([(
"menuitem".to_string(),
Value::Array(vec![
Value::Object(HashMap::from([
("value".to_string(), Value::String("New".to_string())),
(
"onclick".to_string(),
Value::String("CreateNewDoc()".to_string()),
),
])),
Value::Object(HashMap::from([
("value".to_string(), Value::String("Open".to_string())),
(
"onclick".to_string(),
Value::String("OpenDoc()".to_string()),
),
])),
Value::Object(HashMap::from([
("value".to_string(), Value::String("Close".to_string())),
(
"onclick".to_string(),
Value::String("CloseDoc()".to_string()),
),
])),
]),
)])),
),
])),
)]));
assert_eq!(value, expected);
```
# Installation
``` toml
[dependencies]
wson = "*"
```