Class JsonStreamParser

  • All Implemented Interfaces:
    java.util.Iterator<JsonElement>

    public final class JsonStreamParser
    extends java.lang.Object
    implements java.util.Iterator<JsonElement>
    A streaming parser that allows reading of multiple JsonElements from the specified reader asynchronously. The JSON data is parsed in lenient mode, see also JsonReader.setLenient(boolean).

    This class is conditionally thread-safe (see Item 70, Effective Java second edition). To properly use this class across multiple threads, you will need to add some external synchronization. For example:

     JsonStreamParser parser = new JsonStreamParser("['first'] {'second':10} 'third'");
     JsonElement element;
     synchronized (parser) {  // synchronize on an object shared by threads
       if (parser.hasNext()) {
         element = parser.next();
       }
     }
     
    Since:
    1.4
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean hasNext()
      Returns true if a JsonElement is available on the input for consumption
      JsonElement next()
      Returns the next available JsonElement on the reader.
      void remove()
      This optional Iterator method is not relevant for stream parsing and hence is not implemented.
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface java.util.Iterator

        forEachRemaining
    • Constructor Detail

      • JsonStreamParser

        public JsonStreamParser​(java.lang.String json)
        Parameters:
        json - The string containing JSON elements concatenated to each other.
        Since:
        1.4
      • JsonStreamParser

        public JsonStreamParser​(java.io.Reader reader)
        Parameters:
        reader - The data stream containing JSON elements concatenated to each other.
        Since:
        1.4
    • Method Detail

      • next

        public JsonElement next()
                         throws JsonParseException
        Returns the next available JsonElement on the reader. Throws a NoSuchElementException if no element is available.
        Specified by:
        next in interface java.util.Iterator<JsonElement>
        Returns:
        the next available JsonElement on the reader.
        Throws:
        JsonSyntaxException - if the incoming stream is malformed JSON.
        java.util.NoSuchElementException - if no JsonElement is available.
        JsonParseException
        Since:
        1.4
      • hasNext

        public boolean hasNext()
        Returns true if a JsonElement is available on the input for consumption
        Specified by:
        hasNext in interface java.util.Iterator<JsonElement>
        Returns:
        true if a JsonElement is available on the input, false otherwise
        Throws:
        JsonSyntaxException - if the incoming stream is malformed JSON.
        Since:
        1.4
      • remove

        public void remove()
        This optional Iterator method is not relevant for stream parsing and hence is not implemented.
        Specified by:
        remove in interface java.util.Iterator<JsonElement>
        Since:
        1.4