public interface JsonParser
extends java.io.Closeable
Json contains methods to create parsers from input
sources (InputStream and Reader).
The following example demonstrates how to create a parser from a string that contains an empty JSON array:
JsonParser parser = Json.createParser(new StringReader("[]"));
The class JsonParserFactory also contains methods to create
JsonParser instances. JsonParserFactory is preferred
when creating multiple parser instances. A sample usage is shown
in the following example:
JsonParserFactory factory = Json.createParserFactory();
JsonParser parser1 = factory.createParser(...);
JsonParser parser2 = factory.createParser(...);
JsonParser parses JSON using the pull parsing programming model.
In this model the client code controls the thread and calls the method
next() to advance the parser to the next state after
processing each element. The parser can generate the following events:
START_OBJECT, END_OBJECT, START_ARRAY,
END_ARRAY, KEY_NAME, VALUE_STRING,
VALUE_NUMBER, VALUE_TRUE, VALUE_FALSE,
and VALUE_NULL.
For example, for an empty JSON object ({ }), the parser generates the event
START_OBJECT with the first call to the method next() and the
event END_OBJECT with the second call to the method next().
The following code demonstrates how to access these events:
Event event = parser.next(); // START_OBJECT
event = parser.next(); // END_OBJECT
For example, for the following JSON:
{
"firstName": "John", "lastName": "Smith", "age": 25,
"phoneNumber": [
{ "type": "home", "number": "212 555-1234" },
{ "type": "fax", "number": "646 555-4567" }
]
}
calls to the method next() result in parse events at the specified
locations below (marked in bold):
{START_OBJECT
"firstName"KEY_NAME: "John"VALUE_STRING, "lastName"KEY_NAME: "Smith"VALUE_STRING, "age"KEY_NAME: 25VALUE_NUMBER,
"phoneNumber"KEY_NAME : [START_ARRAY
{START_OBJECT "type"KEY_NAME: "home"VALUE_STRING, "number"KEY_NAME: "212 555-1234"VALUE_STRING }END_OBJECT,
{START_OBJECT "type"KEY_NAME: "fax"VALUE_STRING, "number"KEY_NAME: "646 555-4567"VALUE_STRING }END_OBJECT
]END_ARRAY
}END_OBJECT
The methods next() and hasNext() enable iteration over
parser events to process JSON data. JsonParser provides get methods
to obtain the value at the current state of the parser. For example, the
following code shows how to obtain the value "John" from the JSON above:
Event event = parser.next(); // START_OBJECT
event = parser.next(); // KEY_NAME
event = parser.next(); // VALUE_STRING
parser.getString(); // "John"
Json,
JsonParserFactory| Modifier and Type | Interface and Description |
|---|---|
static class |
JsonParser.Event
An event from
JsonParser. |
| Modifier and Type | Method and Description |
|---|---|
void |
close()
Closes this parser and frees any resources associated with the
parser.
|
int |
getInt()
Returns a JSON number as an integer.
|
JsonLocation |
getLocation()
Return the location that corresponds to the parser's current state in
the JSON input source.
|
long |
getLong()
Returns a JSON number as a long.
|
java.lang.String |
getString()
Returns a
String for the name in a name/value pair,
for a string value or a number value. |
boolean |
hasNext()
Returns
true if there are more parsing states. |
boolean |
isIntegralNumber()
Returns true if the JSON number at the current parser state is a
integral number.
|
JsonParser.Event |
next()
Returns the event for the next parsing state.
|
boolean hasNext()
true if there are more parsing states. This method returns
false if the parser reaches the end of the JSON text.true if there are more parsing states.JsonException - if an i/o error occurs (IOException
would be cause of JsonException)JsonParsingException - if the parser encounters invalid JSON
when advancing to next state.JsonParser.Event next()
JsonException - if an i/o error occurs (IOException
would be cause of JsonException)JsonParsingException - if the parser encounters invalid JSON
when advancing to next state.java.util.NoSuchElementException - if there are no more parsing
states.java.lang.String getString()
String for the name in a name/value pair,
for a string value or a number value. This method should only be called
when the parser state is JsonParser.Event.KEY_NAME, JsonParser.Event.VALUE_STRING,
or JsonParser.Event.VALUE_NUMBER.JsonParser.Event.KEY_NAME
a string value when the parser state is JsonParser.Event.VALUE_STRING
a number value when the parser state is JsonParser.Event.VALUE_NUMBERjava.lang.IllegalStateException - when the parser state is not
KEY_NAME, VALUE_STRING, or VALUE_NUMBERboolean isIntegralNumber()
JsonParser parser = ...
if (parser.isIntegralNumber()) {
parser.getInt(); // or other methods to get integral value
} else {
parser.getString();
}
java.lang.IllegalStateException - when the parser state is not
VALUE_NUMBERint getInt()
JsonParser.Event.VALUE_NUMBER.java.lang.IllegalStateException - when the parser state is not
VALUE_NUMBERlong getLong()
JsonParser.Event.VALUE_NUMBER.java.lang.IllegalStateException - when the parser state is not
VALUE_NUMBERJsonLocation getLocation()
void close()
close in interface java.lang.AutoCloseableclose in interface java.io.CloseableJsonException - if an i/o error occurs (IOException
would be cause of JsonException)Copyright © 2014, Oracle and/or its affiliates. All rights reserved.