MCPcopy Create free account
hub / github.com/dprint/jsonc-parser / parse_object

Function parse_object

src/parse_to_value.rs:51–83  ·  view source on GitHub ↗
(parser: &mut JsoncParser<'a>)

Source from the content-addressed store, hash-verified

49}
50
51fn parse_object<'a>(parser: &mut JsoncParser<'a>) -> Result<JsonValue<'a>, ParseError> {
52 parser.enter_container()?;
53 let mut props = Map::new();
54 let mut first = true;
55
56 loop {
57 match parser.scan_object_entry(first)? {
58 None => break,
59 Some(key) => {
60 first = false;
61 let key_string = key.into_string();
62 parser.scan_object_colon()?;
63 match parser.scan()? {
64 Some(value_token) => {
65 let value = parse_value(parser, value_token)?;
66 props.insert(key_string, value);
67 }
68 None => {
69 parser.exit_container();
70 return Err(
71 parser
72 .scanner
73 .create_error_for_current_token(ParseErrorKind::ExpectedObjectValue),
74 );
75 }
76 }
77 }
78 }
79 }
80
81 parser.exit_container();
82 Ok(JsonValue::Object(JsonObject::new(props)))
83}
84
85fn parse_array<'a>(parser: &mut JsoncParser<'a>) -> Result<JsonValue<'a>, ParseError> {
86 parser.enter_container()?;

Callers 1

parse_valueFunction · 0.70

Calls 10

ObjectClass · 0.85
enter_containerMethod · 0.80
scan_object_entryMethod · 0.80
scan_object_colonMethod · 0.80
insertMethod · 0.80
exit_containerMethod · 0.80
parse_valueFunction · 0.70
into_stringMethod · 0.45
scanMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…