Class JsonProvider

java.lang.Object
jakarta.json.spi.JsonProvider

public abstract class JsonProvider extends Object
Service provider for JSON processing objects.

All the methods in this class are safe for use by multiple concurrent threads.

See Also:
  • Field Details

    • JSONP_PROVIDER_FACTORY

      public static final String JSONP_PROVIDER_FACTORY
      The name of the property that contains the name of the class capable of creating new JsonProvider objects.
      See Also:
  • Constructor Details

    • JsonProvider

      protected JsonProvider()
      Default constructor.
  • Method Details

    • provider

      public static JsonProvider provider()
      Creates a JSON provider object. Implementation discovery consists of following steps:
      1. If the system property "jakarta.json.provider" exists, then its value is assumed to be the provider factory class. This phase of the look up enables per-JVM override of the JsonProvider implementation.
      2. The provider is loaded using the ServiceLoader.load(Class) method.
      3. If all the steps above fail, then the rest of the look up is unspecified. That said, the recommended behavior is to simply look for some hard-coded platform default Jakarta JSON Processing implementation. This phase of the look up is so that a platform can have its own Jakarta JSON Processing implementation as the last resort.
      Users are recommended to cache the result of this method.
      Returns:
      a JSON provider
      See Also:
    • createParser

      public abstract JsonParser createParser(Reader reader)
      Creates a JSON parser from a character stream.
      Parameters:
      reader - i/o reader from which JSON is to be read
      Returns:
      a JSON parser
    • createParser

      public abstract JsonParser createParser(InputStream in)
      Creates a JSON parser from the specified byte stream. The character encoding of the stream is determined as defined in RFC 7159 .
      Parameters:
      in - i/o stream from which JSON is to be read
      Returns:
      a JSON parser
      Throws:
      JsonException - if encoding cannot be determined or i/o error (IOException would be cause of JsonException)
    • createParserFactory

      public abstract JsonParserFactory createParserFactory(Map<String,?> config)
      Creates a parser factory for creating JsonParser instances. The factory is configured with the specified map of provider specific configuration properties. Provider implementations should ignore any unsupported configuration properties specified in the map.
      Parameters:
      config - a map of provider specific properties to configure the JSON parsers. The map may be empty or null
      Returns:
      a JSON parser factory
    • createGenerator

      public abstract JsonGenerator createGenerator(Writer writer)
      Creates a JSON generator for writing JSON text to a character stream.
      Parameters:
      writer - a i/o writer to which JSON is written
      Returns:
      a JSON generator
    • createGenerator

      public abstract JsonGenerator createGenerator(OutputStream out)
      Creates a JSON generator for writing JSON text to a byte stream.
      Parameters:
      out - i/o stream to which JSON is written
      Returns:
      a JSON generator
    • createGeneratorFactory

      public abstract JsonGeneratorFactory createGeneratorFactory(Map<String,?> config)
      Creates a generator factory for creating JsonGenerator instances. The factory is configured with the specified map of provider specific configuration properties. Provider implementations should ignore any unsupported configuration properties specified in the map.
      Parameters:
      config - a map of provider specific properties to configure the JSON generators. The map may be empty or null
      Returns:
      a JSON generator factory
    • createReader

      public abstract JsonReader createReader(Reader reader)
      Creates a JSON reader from a character stream.
      Parameters:
      reader - a reader from which JSON is to be read
      Returns:
      a JSON reader
    • createReader

      public abstract JsonReader createReader(InputStream in)
      Creates a JSON reader from a byte stream. The character encoding of the stream is determined as described in RFC 7159.
      Parameters:
      in - a byte stream from which JSON is to be read
      Returns:
      a JSON reader
    • createWriter

      public abstract JsonWriter createWriter(Writer writer)
      Creates a JSON writer to write a JSON object or array structure to the specified character stream.
      Parameters:
      writer - to which JSON object or array is written
      Returns:
      a JSON writer
    • createWriter

      public abstract JsonWriter createWriter(OutputStream out)
      Creates a JSON writer to write a JSON object or array structure to the specified byte stream. Characters written to the stream are encoded into bytes using UTF-8 encoding.
      Parameters:
      out - to which JSON object or array is written
      Returns:
      a JSON writer
    • createWriterFactory

      public abstract JsonWriterFactory createWriterFactory(Map<String,?> config)
      Creates a writer factory for creating JsonWriter objects. The factory is configured with the specified map of provider specific configuration properties. Provider implementations should ignore any unsupported configuration properties specified in the map.
      Parameters:
      config - a map of provider specific properties to configure the JSON writers. The map may be empty or null
      Returns:
      a JSON writer factory
    • createReaderFactory

      public abstract JsonReaderFactory createReaderFactory(Map<String,?> config)
      Creates a reader factory for creating JsonReader objects. The factory is configured with the specified map of provider specific configuration properties. Provider implementations should ignore any unsupported configuration properties specified in the map.
      Parameters:
      config - a map of provider specific properties to configure the JSON readers. The map may be empty or null
      Returns:
      a JSON reader factory
    • createObjectBuilder

      public abstract JsonObjectBuilder createObjectBuilder()
      Creates a JSON object builder.
      Returns:
      a JSON object builder
    • createObjectBuilder

      public JsonObjectBuilder createObjectBuilder(JsonObject object)
      Creates a JSON object builder, initialized with the specified object.
      Parameters:
      object - the initial JSON object in the builder
      Returns:
      a JSON object builder
      Since:
      1.1
    • createObjectBuilder

      public JsonObjectBuilder createObjectBuilder(Map<String,?> map)
      Creates a JSON object builder, initialized with the data from specified map. If the @{code map} contains Optionals then resulting JSON object builder contains the key from the map only if the Optional is not empty.
      Parameters:
      map - the initial object in the builder
      Returns:
      a JSON object builder
      Throws:
      IllegalArgumentException - if the value from the map cannot be converted to the corresponding JsonValue
      Since:
      1.1
    • createArrayBuilder

      public abstract JsonArrayBuilder createArrayBuilder()
      Creates a JSON array builder.
      Returns:
      a JSON array builder
    • createArrayBuilder

      public JsonArrayBuilder createArrayBuilder(JsonArray array)
      Creates a JSON array builder, initialized with the specified array.
      Parameters:
      array - the initial JSON array in the builder
      Returns:
      a JSON array builder
      Since:
      1.1
    • createPointer

      public JsonPointer createPointer(String jsonPointer)
      Creates JSON Pointer (RFC 6901) from given jsonPointer string.
      • An empty jsonPointer string defines a reference to the target itself.
      • If the jsonPointer string is non-empty, it must be a sequence of '/' prefixed tokens.
      Parameters:
      jsonPointer - the JSON Pointer string
      Returns:
      a JSON Pointer
      Throws:
      NullPointerException - if jsonPointer is null
      JsonException - if jsonPointer is not a valid JSON Pointer
      Since:
      1.1
    • createPatchBuilder

      public JsonPatchBuilder createPatchBuilder()
      Creates a JSON Patch builder (RFC 6902).
      Returns:
      a JSON Patch builder
      Since:
      1.1
    • createPatchBuilder

      public JsonPatchBuilder createPatchBuilder(JsonArray array)
      Creates a JSON Patch builder (RFC 6902), initialized with the specified operations.
      Parameters:
      array - the initial patch operations
      Returns:
      a JSON Patch builder
      Since:
      1.1
    • createPatch

      public JsonPatch createPatch(JsonArray array)
      Creates a JSON Patch (RFC 6902) from the specified operations.
      Parameters:
      array - patch operations
      Returns:
      a JSON Patch
      Since:
      1.1
    • createDiff

      public JsonPatch createDiff(JsonStructure source, JsonStructure target)
      Generates a JSON Patch (RFC 6902) from the source and target JsonStructure. The generated JSON Patch need not be unique.
      Parameters:
      source - the source
      target - the target, must be the same type as the source
      Returns:
      a JSON Patch which when applied to the source, yields the target
      Since:
      1.1
    • createMergePatch

      public JsonMergePatch createMergePatch(JsonValue patch)
      Creates JSON Merge Patch (RFC 7396) from specified JsonValue.
      Parameters:
      patch - the patch
      Returns:
      a JSON Merge Patch
      Since:
      1.1
    • createMergeDiff

      public JsonMergePatch createMergeDiff(JsonValue source, JsonValue target)
      Generates a JSON Merge Patch (RFC 7396) from the source and target JsonValues which when applied to the source, yields the target.
      Parameters:
      source - the source
      target - the target
      Returns:
      a JSON Merge Patch
      Since:
      1.1
    • createArrayBuilder

      public JsonArrayBuilder createArrayBuilder(Collection<?> collection)
      Creates a JSON array builder, initialized with the content of specified collection. If the @{code collection} contains Optionals then resulting JSON array builder contains the value from the collection only if the Optional is not empty.
      Parameters:
      collection - the initial data for the builder
      Returns:
      a JSON array builder
      Throws:
      IllegalArgumentException - if the value from the collection cannot be converted to the corresponding JsonValue
      Since:
      1.1
    • createBuilderFactory

      public abstract JsonBuilderFactory createBuilderFactory(Map<String,?> config)
      Creates a builder factory for creating JsonArrayBuilder and JsonObjectBuilder objects. The factory is configured with the specified map of provider specific configuration properties. Provider implementations should ignore any unsupported configuration properties specified in the map.
      Parameters:
      config - a map of provider specific properties to configure the JSON builders. The map may be empty or null
      Returns:
      a JSON builder factory
    • createValue

      public JsonString createValue(String value)
      Creates a JsonString.
      Parameters:
      value - a JSON string
      Returns:
      the JsonString for the string
      Since:
      1.1
    • createValue

      public JsonNumber createValue(int value)
      Creates a JsonNumber.
      Parameters:
      value - a JSON number
      Returns:
      the JsonNumber for the number
      Since:
      1.1
    • createValue

      public JsonNumber createValue(long value)
      Creates a JsonNumber.
      Parameters:
      value - a JSON number
      Returns:
      the JsonNumber for the number
      Since:
      1.1
    • createValue

      public JsonNumber createValue(double value)
      Creates a JsonNumber.
      Parameters:
      value - a JSON number
      Returns:
      the JsonNumber for the number
      Since:
      1.1
    • createValue

      public JsonNumber createValue(BigDecimal value)
      Creates a JsonNumber.
      Parameters:
      value - a JSON number
      Returns:
      the JsonNumber for the number
      Since:
      1.1
    • createValue

      public JsonNumber createValue(BigInteger value)
      Creates a JsonNumber.
      Parameters:
      value - a JSON number
      Returns:
      the JsonNumber for the number
      Since:
      1.1
    • createValue

      public JsonNumber createValue(Number number)
      Creates a JsonNumber. When it is not implemented it checks the type and delegates to an existing method that already handles that type. It throws UnsupportedOperationException in case the type is not known.
      Parameters:
      number - a JSON number
      Returns:
      the JsonNumber for the number
      Since:
      2.1