diff options
| author | Laytan <laytanlaats@hotmail.com> | 2025-12-29 15:53:51 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-12-29 15:53:51 +0100 |
| commit | 852ea91cdb85f1041c49e4c2528462d5d7f26ddd (patch) | |
| tree | 8d9fe99355bc89a76eb958bcf65a1ca85e2ccca8 /core/encoding/json/parser.odin | |
| parent | 39fa1b72015d25e738c6228b438e965cff7eef72 (diff) | |
| parent | 6441fc09e0c540260cfad3f3a271811fe8423fc4 (diff) | |
Merge pull request #6078 from BigBoyBarney/json-arrays
Fix standard json parsing / unmarshalling issue for pure arrays
Diffstat (limited to 'core/encoding/json/parser.odin')
| -rw-r--r-- | core/encoding/json/parser.odin | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/core/encoding/json/parser.odin b/core/encoding/json/parser.odin index d6c3df7c6..cd6518955 100644 --- a/core/encoding/json/parser.odin +++ b/core/encoding/json/parser.odin @@ -38,7 +38,7 @@ parse_string :: proc(data: string, spec := DEFAULT_SPECIFICATION, parse_integers switch p.spec { case .JSON: - return parse_object(&p, loc) + return parse_value(&p, loc) case .JSON5: return parse_value(&p, loc) case .SJSON: @@ -84,7 +84,7 @@ expect_token :: proc(p: ^Parser, kind: Token_Kind) -> Error { parse_colon :: proc(p: ^Parser) -> (err: Error) { - colon_err := expect_token(p, .Colon) + colon_err := expect_token(p, .Colon) if colon_err == nil { return nil } @@ -133,13 +133,13 @@ parse_value :: proc(p: ^Parser, loc := #caller_location) -> (value: Value, err: f, _ := strconv.parse_f64(token.text) value = Float(f) return - + case .Ident: if p.spec == .MJSON { advance_token(p) return clone_string(token.text, p.allocator, loc) } - + case .String: advance_token(p) return unquote_string(token, p.spec, p.allocator, loc) @@ -192,7 +192,7 @@ parse_array :: proc(p: ^Parser, loc := #caller_location) -> (value: Value, err: for p.curr_token.kind != .Close_Bracket { elem := parse_value(p, loc) or_return append(&array, elem, loc) - + if parse_comma(p) { break } @@ -278,7 +278,7 @@ parse_object_body :: proc(p: ^Parser, end_token: Token_Kind, loc := #caller_loca if parse_comma(p) { break } - } + } return obj, .None } @@ -481,4 +481,4 @@ unquote_string :: proc(token: Token, spec: Specification, allocator := context.a } return string(b[:w]), nil -}
\ No newline at end of file +} |