1use core::range::Range;
2
3use crate::{
4 Result,
5 tokens::TokenStream,
6 traverse::{Visitor, parse_tokens},
7};
8
9#[derive(Debug)]
10pub struct NoopVisitor;
11
12impl<'a> Visitor<'a> for NoopVisitor {
13 fn on_object_open(&mut self, _range: Range<usize>) {}
14 fn on_object_key(&mut self, _range: Range<usize>, _key: &'a str) {}
15 fn on_object_close(&mut self, _range: Range<usize>) {}
16 fn on_array_open(&mut self, _range: Range<usize>) {}
17 fn on_array_close(&mut self, _range: Range<usize>) {}
18 fn on_null(&mut self, _range: Range<usize>) {}
19 fn on_string(&mut self, _range: Range<usize>, _value: &'a str) {}
20 fn on_mantissa(&mut self, _range: Range<usize>, _mantissa: &'a str) {}
21 fn on_exponent(&mut self, _range: Range<usize>, _exponent: &'a str) {}
22 fn on_boolean(&mut self, _range: Range<usize>, _value: bool) {}
23 fn on_object_key_val_delim(&mut self) {}
24 fn on_item_delim(&mut self) {}
25}
26
27pub fn validate_str(json: &str) -> Result<()> {
28 let mut visitor = NoopVisitor;
29 parse_tokens(&mut TokenStream::new(json), json, true, &mut visitor)?;
30 Ok(())
31}