Skip to content

inqwell/json

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 

Repository files navigation

A JSON parser using JavaCC

A JSON parser (JavaCC generated - see JSON.jj).

Parse a JSON input stream and call back to an implementation
of Handler at various parse events.

The parser is unaware of the object graph being created,
concerning itself only with the identification of
JSON objects, arrays, members, elements and their values.

It is biased towards a collections-based result, supporting
generic parameters for the JSON concepts of objects
and arrays, however these can be simply marker interfaces
if required - their implementation is entirely opaque
to the parser. The generic parameters at the class, rather
than the method level arises from JavaCC's limitation in
that regard.

The parser discriminates values that are numeric, one of
the JSON literals true/false/null or strings, so that
the Handler implementation can act appropriately. 

To use the parser, instantiate it using one of the
standard JavaCC-generated constructors and then
call parse(Handler), parseObject(Handler)
or parseArray(Handler).

A number of deviations from the JSON standard are supported.
These are

- Strings may be single-quoted instead of double-quoted.
An embedded single quote must be escaped but a double
quote need not be

- Object names need not be quoted at all, however in
this case they must be alpha-numeric, like identifiers
in Java or C.

- Comments in either Java single or multi-line style
are supported. These are ignored by the parser.

Version History
===============

1.2
Added additional utility static methods in DefaultHandler
to identify true/false/null

1.1
Fix numerics grammar
Bug in element() non-terminal not descending into arrays

1.0
Initial version    

http://www.inqwell.com

Maven:
    <repository>
      <id>inqwell-repo</id>
      <url>https://github.com/inqwell/mvn-repo/raw/master/releases</url>
      <name>Inqwell Hosted Artifacts</name>
    </repository>
    <repository>
      <id>inqwell-snapshot</id>
      <url>https://github.com/inqwell/mvn-repo/raw/master/snapshots</url>
      <name>Inqwell Hosted Artifacts (SNAPSHOT)</name>
    </repository>

    <dependency>
      <groupId>com.inqwell</groupId>
      <artifactId>json</artifactId>
      <version>1.2</version>
    </dependency>


---------------------------------------------------------

License:
http://www.opensource.org/licenses/BSD-3-Clause

Copyright (c) 2012, Inqwell Ltd.
All rights reserved.

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.  Redistributions
in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.  Neither the name of
Inqwell Ltd nor the names of its contributors may be used to endorse
or promote products derived from this software without specific prior
written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.

About

An agnostic JSON parser

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages