Skip to content

A state-machine based JSON parser.

License

Notifications You must be signed in to change notification settings

paulhuggett/peejay

Repository files navigation

peejay

Status

Continuous Integration

CI Build & Test

Static Analysis

Quality Gate Codacy Badge Coverity Scan Build Status Microsoft C++ Code Analysis

Dynamic Analysis

KLEE Tests CodeCov Fuzz Tests

Open SSF

OpenSSF Best Practices OpenSSF Scorecard

Introduction

Peejay (PJ) is a state-machine based JSON parser for C++17 or later. (The silly name comes from the English pronunciation of P.J. which is short for Parse JSON.)

JSON5 extension support

Please refer to the JSON5 specification for further details.

Feature Support

Object keys may be an ECMAScript 5.1 IdentifierName

extensions::identifier_object_key

Objects may have a single trailing comma

extensions::object_trailing_comma

Arrays may have a single trailing comma

extensions::array_trailing_comma

Strings may be single quoted

extensions::single_quote_string

Strings may span multiple lines by escaping new line characters

extensions::string_escapes

Strings may include character escapes

extensions::string_escapes

Numbers may be hexadecimal

extensions::numbers

Numbers may have a leading or trailing decimal point

extensions::numbers

Numbers may be IEEE 754 positive infinity, negative infinity, and NaN

extensions::numbers

Numbers may begin with an explicit plus sign

extensions::leading_plus

Single and multi-line comments are allowed

extensions::bash_comments (enables use of single line comments beginning with a hash “#” character), extensions::single_line_comments (enables use of single line comments beginning with two slash (“//”) characters), extensions::multi_line_comments (enables use of multi-line comments enclosed by /\* … \*/ characters)

Additional white space characters are allowed

extensions::extra_whitespace

About

A state-machine based JSON parser.

Resources

License

Security policy