glideapps/quicktype

Find a better JSON parser or implement our own

Open

#646 opened on Mar 8, 2018

View on GitHub
 (12 comments) (2 reactions) (0 assignees)TypeScript (968 forks)batch import
good first issue

Repository metrics

Stars
 (10,867 stars)
PR merge metrics
 (No merged PRs in 30d)

Description

Required features:

  • Streaming. We need to process files larger than V8 strings allow.
  • Preserve property order.
  • Good and actionable error messages. Our users often have issues with invalid JSON.
  • Recover from common errors.
  • Distinguish between integers and floating point numbers.
  • Span for each non-symbol token - line number and column of start and end.

Common errors:

  • Unquoted keys: { foo: "bar" }
  • Superfluous commas: [1, 2, 3,]
  • Wrong delimiter: [ "foo": "bar" ], { 1, 2, 3 }

Other easily recoverable errors:

  • = (or anything else) instead of : in objects: { "foo"="bar" }
  • Number format stuff, such as no digits before point (.3), leading zeros (0123), hexadecimals (0xdeadbeef)

Contributor guide