public class JSONTokener extends Object
constructor
and nextValue()
method. Example usage:
String json = "{" + " \"query\": \"Pizza\", " + " \"locations\": [ 94043, 90210 ] " + "}"; JSONObject object = (JSONObject)new JSONTokener(json).nextValue(); String query = object.getString("query"); JSONArray locations = object.getJSONArray("locations");
For best interoperability and performance use JSON that complies with RFC 4627, such as that
generated by JSONStringer
. For legacy reasons this parser is lenient, so a successful
parse does not indicate that the input string was valid JSON. All of the following syntax errors
will be ignored:
//
or #
and ending with a newline
character.
/*
and ending with *
/
. Such comments
may not be nested.
'single quoted'
.
0x
or 0X
.
0
.
;
.
=
or =>
.
;
.
Each tokener may be used to parse a single JSON string. Instances of this class are not thread safe. Although this class is nonfinal, it was not designed for inheritance and should not be subclassed. In particular, self-use by overrideable methods is not specified. See Effective Java Item 17, "Design and Document or inheritance or else prohibit it" for further information.
Constructor and Description |
---|
JSONTokener(InputStream inputStream)
Deprecated.
since 6.27.0/7.7.0 for legal reasons.
|
JSONTokener(Reader input) |
JSONTokener(String in) |
Modifier and Type | Method and Description |
---|---|
void |
back()
Unreads the most recent character of input.
|
static int |
dehexchar(char hex)
Returns the integer [0..15] value for the given hex character, or -1 for non-hex input.
|
boolean |
end()
Deprecated.
since 6.27.0/7.7.0 for legal reasons.
|
boolean |
more()
Returns true until the input has been exhausted.
|
char |
next()
Returns the next available character, or the null character '\0' if all input has been
exhausted.
|
char |
next(char c)
Returns the next available character if it equals
c . |
String |
next(int length)
Returns the next
length characters of the input. |
char |
nextClean()
Returns the next character that is not whitespace and does not belong to a comment.
|
String |
nextString(char quote)
Returns the string up to but not including
quote , unescaping any character escape
sequences encountered along the way. |
String |
nextTo(char excluded)
Equivalent to
nextTo(String.valueOf(excluded)) . |
String |
nextTo(String excluded)
Returns the
trimmed string holding the characters up to but not including
the first of:
any character in excluded
a newline character '\n'
a carriage return '\r'
|
Object |
nextValue()
Returns the next value from the input.
|
boolean |
skipPast(String thru)
Advances past all input up to and including the next occurrence of
thru . |
char |
skipTo(char to)
Advances past all input up to but not including the next occurrence of
to . |
JSONException |
syntaxError(String message)
Returns an exception containing the given message plus the current position and the entire
input string.
|
String |
toString()
Returns the current position and the entire input string.
|
public JSONTokener(String in)
in
- JSON encoded string. Null is not permitted and will yield a tokener that throws
NullPointerExceptions
when methods are called.public JSONTokener(Reader input) throws IOException
IOException
@Deprecated public JSONTokener(InputStream inputStream)
public Object nextValue() throws JSONException
JSONObject
, JSONArray
, String, Boolean, Integer, Long, Double or
JSONObject.NULL
.JSONException
- if the input is malformed.public String nextString(char quote) throws JSONException
quote
, unescaping any character escape
sequences encountered along the way. The opening quote should have already been read. This
consumes the closing quote, but does not include it in the returned string.quote
- either ' or ".JSONException
- if the string isn't terminated by a closing quote correctly.public JSONException syntaxError(String message)
message
- The message we want to include.public String toString()
public boolean more()
public char next()
public char next(char c) throws JSONException
c
. Otherwise an exception is
thrown.c
- The character we are looking for.JSONException
- If the next character isn't c
public char nextClean() throws JSONException
JSONException
- Should not be possible.public String next(int length) throws JSONException
length
characters of the input.
The returned string shares its backing character array with this tokener's input string. If a
reference to the returned string may be held indefinitely, you should use
new String(result)
to copy it first to avoid memory leaks.
length
- The desired number of characters to return.JSONException
- if the remaining input is not long enough to satisfy this request.public String nextTo(String excluded)
trimmed
string holding the characters up to but not including
the first of:
excluded
The returned string shares its backing character array with this tokener's input string. If a
reference to the returned string may be held indefinitely, you should use
new String(result)
to copy it first to avoid memory leaks.
excluded
- The limiting string where the search should stop.public String nextTo(char excluded)
nextTo(String.valueOf(excluded))
.excluded
- The limiting character.public boolean skipPast(String thru)
thru
. If the
remaining input doesn't contain thru
, the input is exhausted.thru
- The string to skip over.public char skipTo(char to)
to
. If the
remaining input doesn't contain to
, the input is unchanged.to
- The character we want to skip to.to
or null.public void back()
public static int dehexchar(char hex)
hex
- a character in the ranges [0-9], [A-F] or [a-f]. Any other character will yield a
-1 result.@Deprecated public boolean end()
Copyright © 2006–2021 Apache Software Foundation. All rights reserved.