JSONFormatter (Apache Geode 1.13.6)
Date: 2021-12-14

org.apache.geode.pdx

## Class JSONFormatter

- java.lang.Object
- - org.apache.geode.pdx.JSONFormatter

-     public class JSONFormatter
      extends Object

  JSONFormatter has a static method `fromJSON(String, String...)` to convert a JSON document into a `PdxInstance` and a static method `toJSON(PdxInstance)` to convert a `PdxInstance` into a JSON Document.

  Using these methods an applications may convert a JSON document into a PdxInstance for storing in the cache. Indexes can then be defined on the PdxInstances so that queries can be performed using OQL. Queries will return PdxInstances and these can be turned back back into JSON documents using JSONFormatter.

  JSONFormatter treats values in a json document as number(byte, short, int, long..), string, array, object, 'true', 'false' or 'null'. These correspond to the following java types:

  JSON | Java
  object | `PdxInstance`
  arrays | `LinkedList`
  BigDecimal | `BigDecimal`
  BigInterger | `BigInteger`
  Double | double
  float | float
  boolean | boolean
  Integer | byte, short or int
  null | null

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static String` | `JSON_CLASSNAME`
    `static String` | `SORT_JSON_FIELD_NAMES_PROPERTY` By setting "gemfire.sort-json-field-names" to true, enables serialization of JSON field in JSON document to be sorted.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `JSONFormatter()`
    `JSONFormatter(RegionService regionService)`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static PdxInstance` | `fromJSON(byte[] jsonByteArray)` Converts a Byte Array JSON document into a PdxInstance
    `static PdxInstance` | `fromJSON(byte[] jsonByteArray, String... identityFields)` Converts a Byte Array JSON document into a PdxInstance
    `static PdxInstance` | `fromJSON(String jsonString)` Converts a String JSON document into a PdxInstance
    `static PdxInstance` | `fromJSON(String jsonString, String... identityFields)` Converts a String JSON document into a PdxInstance
    `String` | `fromPdxInstance(PdxInstance pdxInstance)` Converts a PdxInstance into a JSON document
    `RegionService` | `getRegionService()`
    `static String` | `toJSON(PdxInstance pdxInstance)` Converts a PdxInstance into a JSON document in String form
    `static byte[]` | `toJSONByteArray(PdxInstance pdxInstance)` Converts a PdxInstance into a JSON document in byte-array form
    `byte[]` | `toJsonByteArrayFromPdxInstance(PdxInstance pdxInstance)` Converts a PdxInstance into a JSON document in byte-array form
    `PdxInstance` | `toPdxInstance(Object json, String... identityFields)` Converts a JSON document (String or Byte Array) into a PdxInstance

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### JSON_CLASSNAME

          public static final String JSON_CLASSNAME

      See Also:
        Constant Field Values

    - #### SORT_JSON_FIELD_NAMES_PROPERTY

          public static final String SORT_JSON_FIELD_NAMES_PROPERTY

      By setting "gemfire.sort-json-field-names" to true, enables serialization of JSON field in JSON document to be sorted. That can help to reduce the number of pdx typeId generation if different JSON documents have same fields in the different order.
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### JSONFormatter

          public JSONFormatter()

    - #### JSONFormatter

          public JSONFormatter(RegionService regionService)

  - ### Method Detail

    - #### getRegionService

          public RegionService getRegionService()

    - #### fromJSON

          public static PdxInstance fromJSON(String jsonString)

      Converts a String JSON document into a PdxInstance
      Parameters:
        `jsonString` - The JSON String to convert to PDX
      Returns:
        The PdxInstance
      Throws:
        `JSONFormatterException` - if unable to create the PdxInstance

    - #### fromJSON

          public static PdxInstance fromJSON(String jsonString,
                                             String... identityFields)

      Converts a String JSON document into a PdxInstance
      Parameters:
        `jsonString` - The JSON String to convert to PDX
        `identityFields` - Any desired identity fields on the JSON object to be used for equals and hashCode computations
      Returns:
        The PdxInstance
      Throws:
        `JSONFormatterException` - if unable to create the PdxInstance

    - #### fromJSON

          public static PdxInstance fromJSON(byte[] jsonByteArray)

      Converts a Byte Array JSON document into a PdxInstance
      Parameters:
        `jsonByteArray` - The JSON Object as a byte array to convert to PDX
      Returns:
        The PdxInstance
      Throws:
        `JSONFormatterException` - if unable to create the PdxInstance

    - #### fromJSON

          public static PdxInstance fromJSON(byte[] jsonByteArray,
                                             String... identityFields)

      Converts a Byte Array JSON document into a PdxInstance
      Parameters:
        `jsonByteArray` - The JSON Object as a byte array to convert to PDX
        `identityFields` - Any desired identity fields on the JSON object to be used for equals and hashCode computations
      Returns:
        The PdxInstance
      Throws:
        `JSONFormatterException` - if unable to create the PdxInstance

    - #### toPdxInstance

          public PdxInstance toPdxInstance(Object json,
                                           String... identityFields)

      Converts a JSON document (String or Byte Array) into a PdxInstance
      Parameters:
        `json` - The JSON document (String or Byte Array) to convert to PDX
        `identityFields` - Any desired identity fields on the JSON object to be used for equals and hashCode computations
      Returns:
        The PdxInstance
      Throws:
        `JSONFormatterException` - if unable to create the PdxInstance

    - #### toJSON

          public static String toJSON(PdxInstance pdxInstance)

      Converts a PdxInstance into a JSON document in String form
      Parameters:
        `pdxInstance` - the JSON string.
      Returns:
        the JSON string JSONFormatterException if unable to create the JSON document

    - #### fromPdxInstance

          public String fromPdxInstance(PdxInstance pdxInstance)

      Converts a PdxInstance into a JSON document
      Parameters:
        `pdxInstance` - The PdxInstance to convert
      Returns:
        the JSON string
      Throws:
        `JSONFormatterException` - if unable to create the JSON document

    - #### toJSONByteArray

          public static byte[] toJSONByteArray(PdxInstance pdxInstance)

      Converts a PdxInstance into a JSON document in byte-array form
      Parameters:
        `pdxInstance` - The PdxInstance to convert
      Returns:
        the JSON byte array
      Throws:
        `JSONFormatterException` - if unable to create the JSON document

    - #### toJsonByteArrayFromPdxInstance

          public byte[] toJsonByteArrayFromPdxInstance(PdxInstance pdxInstance)

      Converts a PdxInstance into a JSON document in byte-array form
      Parameters:
        `pdxInstance` - The PdxInstance to convert
      Returns:
        the JSON byte array
      Throws:
        `JSONFormatterException` - if unable to create the JSON document