Class ByteSourceJsonBootstrapper


  • public final class ByteSourceJsonBootstrapper
    extends java.lang.Object
    This class is used to determine the encoding of byte stream that is to contain JSON content. Rules are fairly simple, and defined in JSON specification (RFC-4627 or newer), except for BOM handling, which is a property of underlying streams.
    • Constructor Detail

      • ByteSourceJsonBootstrapper

        public ByteSourceJsonBootstrapper​(IOContext ctxt,
                                          java.io.InputStream in)
      • ByteSourceJsonBootstrapper

        public ByteSourceJsonBootstrapper​(IOContext ctxt,
                                          byte[] inputBuffer,
                                          int inputStart,
                                          int inputLen)
    • Method Detail

      • detectEncoding

        public JsonEncoding detectEncoding()
                                    throws java.io.IOException
        Method that should be called after constructing an instace. It will figure out encoding that content uses, to allow for instantiating a proper scanner object.
        Returns:
        JsonEncoding detected, if any; JsonEncoding.UTF8 otherwise
        Throws:
        java.io.IOException - If read from underlying input source fails
      • skipUTF8BOM

        public static int skipUTF8BOM​(java.io.DataInput input)
                               throws java.io.IOException
        Helper method that may be called to see if given DataInput has BOM marker, and if so, to skip it.
        Parameters:
        input - DataInput to read content from
        Returns:
        Byte (as unsigned int) read after possible UTF-8 BOM
        Throws:
        java.io.IOException - If read from underlying input source fails
        Since:
        2.8
      • constructReader

        public java.io.Reader constructReader()
                                       throws java.io.IOException
        Throws:
        java.io.IOException
      • hasJSONFormat

        public static MatchStrength hasJSONFormat​(InputAccessor acc)
                                           throws java.io.IOException
        Current implementation is not as thorough as other functionality (ByteSourceJsonBootstrapper); supports UTF-8, for example. But it should work, for now, and can be improved as necessary.
        Parameters:
        acc - InputAccessor to use for accessing content to check
        Returns:
        Strength of match (never null)
        Throws:
        java.io.IOException - if input access fails due to read problem