JSON in Java package org.json
JSON is a light-weight, language independent, data interchange format. See http://www.JSON.org/.
The files in this package implement JSON encoders/decoders in Java. It also includes the capability to convert between JSON and XML, HTTP headers, Cookies, and CDL.
This is a fork of the reference implementation. There is a large number of JSON packages in Java. Perhaps someday the Java community will standardize on one. Until then, choose carefully.
The license includes this restriction: "The software shall be used for good, not evil." If your conscience cannot live with that, then choose a different package.
The package compiles on Java 1.6-1.8.
JSONObject.java: The JSONObject can parse text from a String or a JSONTokener
to produce a map-like object. The object provides methods for manipulating its
contents, and for producing a JSON compliant object serialization.
JSONArray.java: The JSONObject can parse text from a String or a JSONTokener
to produce a vector-like object. The object provides methods for manipulating
its contents, and for producing a JSON compliant array serialization.
Scanner.java: The Scanner breaks a text into a stream of individual
text sequences. It can be constructed from a String, Reader, or InputStream.
It is used as the basis for parsing in JSONTokener and the org.json.stream
package.
JSONTokener.java: The JSONTokener uses the Scanner to construct and validate
JSON structures from a String, Reader, or InputStream. Some relaxed forms of
JSON text are permitted.
JSONStrictTokener.java: The JSONStrictTokener subclasses JSONTokener for
a strictly conforming JSON parse.
JSONException.java: The JSONException is the standard exception type thrown
by this package.
JSONParseException.java: The JSONParseException subclasses JSONException to
indicate whereabouts a parse error occurred. It contains position information
from a ParsePosition object.
ParsePosition.java: Contains a point-in-time representation of whereabouts
the scanner is positioned within a JSON text.
JSONPointer.java: Implementation of JSON Pointer (RFC 6901). Supports
JSON Pointers both in the form of string representation and URI fragment
representation.
JSONAppendable.java: The JSONAppendable interface requires an appendJSON()
method, allowing an object to provide its own JSON serialization using an
Appendable.
JSONString.java: The JSONString interface requires a toJSONString() method,
allowing an object to provide its own JSON serialization as a String.
JSONStringer.java: The JSONStringer provides a convenient facility for
building JSON strings.
JSONWriter.java: The JSONWriter provides a convenient facility for building
JSON text through a writer.
CDL.java: CDL provides support for converting between JSON and comma
delimited lists.
Cookie.java: Cookie provides support for converting between JSON and cookies.
CookieList.java: CookieList provides support for converting between JSON and
cookie lists.
HTTP.java: HTTP provides support for converting between JSON and HTTP headers.
HTTPTokener.java: HTTPTokener extends JSONTokener for parsing HTTP headers.
XML.java: XML provides support for converting between JSON and XML.
JSONML.java: JSONML provides support for converting between JSONML and XML.
XMLTokener.java: XMLTokener extends JSONTokener for parsing XML text.
Unit tests are maintained in a separate project. Contributing developers can test JSON-java pull requests with the code in this project: https://github.com/run2000/JSON-Java-unit-test
Numeric types in this package comply with ECMA-404: The JSON Data Interchange Format and RFC 7159: The JavaScript Object Notation (JSON) Data Interchange Format.
This package fully supports Integer, Long, and Double Java types. Partial support for BigInteger and BigDecimal values in JSONObject and JSONArray objects is provided in the form of get(), opt(), and put() API methods.
Although 1.6 compatibility is currently supported, it is not a project goal and may be removed in some future release.
In compliance with RFC7159 page 10 section 9, JSONTokener is more lax with what is valid
JSON than the Generator. For Example, the tab character (U+0009) is allowed when reading
JSON Text strings, but when output by the Generator, tab is properly converted to \t in
the string. Other instances may occur where reading invalid JSON text does not cause an
error to be generated.
For a strictly conforming parse, use JSONStrictTokener, or use the org.json.stream
package.
Malformed JSON Texts such as missing end " (quote) on strings or invalid number formats (1.2e6.3) will cause errors as such documents can not be read reliably.
20160212 Java 1.6 compatibility, OSGi bundle. Contains the latest code as of 12 Feb, 2016.
20151123 JSONObject and JSONArray initialization with generics. Contains the latest code as of 23 Nov, 2015.
20150729 Checkpoint for Maven central repository release. Contains the latest code as of 29 July, 2015.
JSON-java releases can be found by searching the Maven repository for groupId "org.json" and artifactId "json". For example: https://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.json%22%20AND%20a%3A%22json%22