Skip to main content

debug/
debug.rs

1use zjson::{any::Any, document::Document};
2
3fn main() {
4    let json = r#"{
5        "one": 1,
6        "array": [true, false, null],
7        "object": {"pi": 3.14, "exp": 1e5, "ignore": "this"}
8    }"#;
9
10    let mut document = Document::new(json);
11
12    // root
13    let mut root = document
14        .next()
15        .expect("failed to parse document")
16        .and_then(Any::object)
17        .expect("failed to get an object from the document");
18
19    // "one"
20    let element = root.next().expect("failed to parse object");
21    let Some((key, Any::Number(mut one))) = element else {
22        panic!("failed to get a number from the object");
23    };
24    let one = one.get().expect("failed to parse number");
25
26    assert_eq!(key, "one");
27    assert_eq!(one.as_u8(), Some(1));
28
29    // "array"
30    let element = root.next().expect("failed to parse object");
31    let Some((key, Any::Array(mut array))) = element else {
32        panic!("failed to get an array from the object");
33    };
34
35    assert_eq!(key, "array");
36
37    // "array" -> 0
38    let mut r#true = array
39        .next()
40        .expect("failed to parse array")
41        .and_then(Any::literal)
42        .expect("failed to get a true value from the array");
43
44    // debug print the true literal
45    println!("{true:#?}");
46
47    let r#true = r#true.get().expect("failed to parse a true value");
48    assert_eq!(r#true, true);
49
50    // skip the rest of "array"
51    array.finish().expect("failed to parse array");
52
53    // skip the rest of root
54    root.finish().expect("failed to parse object");
55
56    // finish document
57    document.finish().expect("failed to parse document");
58}
59
60// Test the example
61#[test]
62fn test() {
63    main();
64}