use json_streaming::blocking::*;
use json_streaming::shared::*;
use std::io;
use std::io::Cursor;
fn main() -> JsonParseResult<(), io::Error>{
println!("required numbers: {:?}", parse_required_number_array("[1, 2, 3, 4, 5]")?);
println!("required numbers parsed as optional: {:?}", parse_optional_number_array("[1, 2, 3, 4, 5]")?);
println!("optional numbers: {:?}", parse_optional_number_array("[1, null, null, 3, 4, 5]")?);
println!("trying to parse with wrong element type (will fail!):");
parse_required_number_array("[1, 2, 3, true, 4]")?;
Ok(())
}
fn parse_required_number_array(json: &str) -> JsonParseResult<Vec<i32>, io::Error> {
let mut result = Vec::new();
let mut r = Cursor::new(json.as_bytes());
let mut json_reader = JsonReader::new(64, &mut r);
json_reader.expect_start_array()?;
while let Some(n) = json_reader.expect_number_or_end_array()? {
result.push(n);
}
Ok(result)
}
fn parse_optional_number_array(json: &str) -> JsonParseResult<Vec<Option<i32>>, io::Error> {
let mut result = Vec::new();
let mut r = Cursor::new(json.as_bytes());
let mut json_reader = JsonReader::new(64, &mut r);
json_reader.expect_start_array()?;
while let Some(n) = json_reader.expect_opt_number_or_end_array()? {
result.push(n);
}
Ok(result)
}