Class AsyncJSON
- java.lang.Object
-
- org.eclipse.jetty.util.ajax.AsyncJSON
-
public class AsyncJSON extends java.lang.ObjectA non-blocking JSON parser that can parse partial JSON strings.
Usage:
AsyncJSON parser = new AsyncJSON.Factory().newAsyncJSON(); // Feed the parser with partial JSON string content. parser.parse(chunk1); parser.parse(chunk2); // Tell the parser that the JSON string content // is terminated and get the JSON object back. Map<String, Object> object = parser.complete();
After the call to
complete()the parser can be reused to parse another JSON string.Custom objects can be created by specifying a
"class"or"x-class"field:String json = """ { "x-class": "com.acme.Person", "firstName": "John", "lastName": "Doe", "age": 42 } """ parser.parse(json); com.acme.Person person = parser.complete();Class
com.acme.Personmust either implementJSON.Convertible, or be mapped with aJSON.ConvertorviaAsyncJSON.Factory.putConvertor(String, Convertor).JSON arrays are by default represented with a
List<Object>, but the Java representation can be customized viaAsyncJSON.Factory.setArrayConverter(Function).
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interfaceAsyncJSON.ContextThe state of JSON parsing.static classAsyncJSON.FactoryThe factory that creates AsyncJSON instances.
-
Constructor Summary
Constructors Constructor Description AsyncJSON(AsyncJSON.Factory factory)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description <R> Rcomplete()Signals to the parser that the parse data is complete, and returns the object parsed from the JSON chunks passed to theparse()methods.protected java.util.List<java.lang.Object>newArray(AsyncJSON.Context context)When a JSON[is encountered during parsing, this method is called to create a newListinstance.protected java.lang.RuntimeExceptionnewInvalidJSON(java.nio.ByteBuffer buffer, java.lang.String message)protected java.util.Map<java.lang.String,java.lang.Object>newObject(AsyncJSON.Context context)When a JSON{is encountered during parsing, this method is called to create a newMapinstance.booleanparse(byte[] bytes)Feeds the parser with the given bytes chunk.booleanparse(byte[] bytes, int offset, int length)Feeds the parser with the given bytes chunk.booleanparse(java.nio.ByteBuffer buffer)Feeds the parser with the given buffer chunk.
-
-
-
Constructor Detail
-
AsyncJSON
public AsyncJSON(AsyncJSON.Factory factory)
-
-
Method Detail
-
parse
public boolean parse(byte[] bytes)
Feeds the parser with the given bytes chunk.
- Parameters:
bytes- the bytes to parse- Returns:
- whether the JSON parsing was complete
- Throws:
java.lang.IllegalArgumentException- if the JSON is malformed
-
parse
public boolean parse(byte[] bytes, int offset, int length)Feeds the parser with the given bytes chunk.
- Parameters:
bytes- the bytes to parseoffset- the offset to start parsing fromlength- the number of bytes to parse- Returns:
- whether the JSON parsing was complete
- Throws:
java.lang.IllegalArgumentException- if the JSON is malformed
-
parse
public boolean parse(java.nio.ByteBuffer buffer)
Feeds the parser with the given buffer chunk.
- Parameters:
buffer- the buffer to parse- Returns:
- whether the JSON parsing was complete
- Throws:
java.lang.IllegalArgumentException- if the JSON is malformed
-
complete
public <R> R complete()
Signals to the parser that the parse data is complete, and returns the object parsed from the JSON chunks passed to the
parse()methods.- Type Parameters:
R- the type the result is cast to- Returns:
- the result of the JSON parsing
- Throws:
java.lang.IllegalArgumentException- if the JSON is malformedjava.lang.IllegalStateException- if the no JSON was passed to theparse()methods
-
newObject
protected java.util.Map<java.lang.String,java.lang.Object> newObject(AsyncJSON.Context context)
When a JSON
{is encountered during parsing, this method is called to create a newMapinstance.Subclasses may override to return a custom
Mapinstance.- Parameters:
context- the parsing context- Returns:
- a
Mapinstance
-
newArray
protected java.util.List<java.lang.Object> newArray(AsyncJSON.Context context)
When a JSON
[is encountered during parsing, this method is called to create a newListinstance.Subclasses may override to return a custom
Listinstance.- Parameters:
context- the parsing context- Returns:
- a
Listinstance
-
newInvalidJSON
protected java.lang.RuntimeException newInvalidJSON(java.nio.ByteBuffer buffer, java.lang.String message)
-
-