use zjson::{any::Any, document::Document};
fn main() {
let json = r#"{
"one": 1,
"array": [true, false, null],
"object": {"pi": 3.14, "exp": 1e5, "ignore": "this"}
}"#;
let mut document = Document::new(json);
let mut root = document
.next()
.expect("failed to parse document")
.and_then(Any::object)
.expect("failed to get an object from the document");
let element = root.next().expect("failed to parse object");
let Some((key, Any::Number(mut one))) = element else {
panic!("failed to get a number from the object");
};
let one = one.get().expect("failed to parse number");
assert_eq!(key, "one");
assert_eq!(one.as_u8(), Some(1));
let element = root.next().expect("failed to parse object");
let Some((key, Any::Array(mut array))) = element else {
panic!("failed to get an array from the object");
};
assert_eq!(key, "array");
let mut r#true = array
.next()
.expect("failed to parse array")
.and_then(Any::literal)
.expect("failed to get a true value from the array");
println!("{true:#?}");
let r#true = r#true.get().expect("failed to parse a true value");
assert_eq!(r#true, true);
array.finish().expect("failed to parse array");
root.finish().expect("failed to parse object");
document.finish().expect("failed to parse document");
}
#[test]
fn test() {
main();
}