Class TupleJSONUtil

java.lang.Object
com.streambase.sb.TupleJSONUtil
All Implemented Interfaces:
JsonUtils

public final class TupleJSONUtil extends Object implements JsonUtils
Utilities for dealing with tuples represented in JSON format.
  • Field Details

    • JSON_TO_TUPLE_FIELD_CONVERT_ERROR

      public static final String JSON_TO_TUPLE_FIELD_CONVERT_ERROR
      Error message: json to tuple field convert error
      See Also:
    • JSON_TO_TUPLE_UNRECOGNIZED_FIELD_VALUE_ERROR

      public static final String JSON_TO_TUPLE_UNRECOGNIZED_FIELD_VALUE_ERROR
      Error message: Unrecognized json value error
      See Also:
    • JSON_TO_TUPLE_UNRECOGNIZED_FIELD_ERROR

      public static final String JSON_TO_TUPLE_UNRECOGNIZED_FIELD_ERROR
      Error message: json to tuple convert error, unknown JSON attributes
      See Also:
    • JSON_TO_TUPLE_SCHEMA_MISMATCH_ERROR

      public static final String JSON_TO_TUPLE_SCHEMA_MISMATCH_ERROR
      Error message: json and tuple field number mismatch
      See Also:
    • JSON_TO_TUPLE_TIMESTAMP_PARSE_ERROR

      public static final String JSON_TO_TUPLE_TIMESTAMP_PARSE_ERROR
      Error message: timestamp parse error
      See Also:
    • JSON_TO_FUNCTION_FORMAT_ERROR

      public static final String JSON_TO_FUNCTION_FORMAT_ERROR
      Error message: The format for functions is not a Json object
      See Also:
    • JSON_TO_FUNCTION_MISSING_BODY_OR_DEFINITION_ERROR

      public static final String JSON_TO_FUNCTION_MISSING_BODY_OR_DEFINITION_ERROR
      Error message: JSON functions must have a body or definition
      See Also:
    • JSON_TO_FUNCTION_UNKNOWN_ATTRIBUTES_ERROR

      public static final String JSON_TO_FUNCTION_UNKNOWN_ATTRIBUTES_ERROR
      Error message: Unknown JSON attributes
      See Also:
    • TO_JSON_OPTIONS_ERROR

      public static final String TO_JSON_OPTIONS_ERROR
      Error message: "PREFER_LIST and PREFER_MAP are mutually exclusive
      See Also:
  • Method Details

    • newObjectMapper

      public static com.fasterxml.jackson.databind.ObjectMapper newObjectMapper()
      Returns:
      A new object mapper, configured
    • jsonPath

      public static String jsonPath(String json, String jsonPath)
      Return the string representation of objects extracted from json according to path

      See https://github.com/json-path/JsonPath for full documentation.

      Parameters:
      json - string representation of json to parse
      jsonPath - string path to traverse to extract objects out of json
      Returns:
      string representation of list of extracted json results; always returns results as a list (which is then stringified)
    • fieldObjectToJsonString

      public static String fieldObjectToJsonString(Schema.Field f, Object value, EnumSet<TupleJSONUtil.Options> options) throws StreamBaseException
      Parameters:
      f - field
      value - field value
      options - parse options
      Returns:
      a JSON string
      Throws:
      StreamBaseException - error in convert tuple to json string
    • fieldObjectToJsonString

      public static String fieldObjectToJsonString(Schema.Field f, Object value, EnumSet<TupleJSONUtil.Options> options, String timestampFormat) throws StreamBaseException
      Parameters:
      f - field
      value - field value
      options - parse options
      timestampFormat - timestamp format
      Returns:
      a JSON string
      Throws:
      StreamBaseException - error in convert tuple to json string
    • typeObjectToJsonString

      public static String typeObjectToJsonString(CompleteDataType cdt, Object value, EnumSet<TupleJSONUtil.Options> options) throws StreamBaseException
      Parameters:
      cdt - a complete data type
      value - field value
      options - parse options
      Returns:
      JSON string for complete data type
      Throws:
      StreamBaseException - error in convert data type to json string
    • typeObjectToJsonString

      public static String typeObjectToJsonString(CompleteDataType cdt, Object value, EnumSet<TupleJSONUtil.Options> options, String timestampFormat) throws StreamBaseException
      Parameters:
      cdt - a complete data type
      value - Data type value
      options - Conversion options
      timestampFormat - Timestamp format
      Returns:
      JSON string for complete data type
      Throws:
      StreamBaseException - Conversion error
    • setTuple

      @Deprecated public static void setTuple(Tuple tuple, Object jsonObject, boolean strict) throws StreamBaseException
      Deprecated.
      Use the TupleJSONUtil.SetTupleFromJSON Builder and its .process() to handle this functionality
      Set the fields of a tuple based on the contents of a JSON object
      Parameters:
      tuple - the tuple to set
      jsonObject - the JSON object; must have at least the fields of the tuple's schema
      strict - whether to throw an exception when fields are missing from tuple's schema
      Throws:
      StreamBaseException - Conversion error
    • setTuple

      @Deprecated public static void setTuple(Tuple tuple, Object jsonObject, boolean strict, String timestampFormat) throws StreamBaseException
      Deprecated.
      Use the TupleJSONUtil.SetTupleFromJSON Builder and its .process() to handle this functionality
      Set the fields of a tuple based on the contents of a JSON object
      Parameters:
      tuple - the tuple to set
      jsonObject - the JSON object; must have at least the fields of the tuple's schema
      strict - whether to throw an exception when fields are missing from tuple's schema
      timestampFormat - the timestamp format to use when converting
      Throws:
      StreamBaseException - Conversion error
    • setTuple

      @Deprecated public static void setTuple(Tuple tuple, Object jsonObject, boolean strict, String timestampFormat, boolean numericTimestampsAsInterval) throws StreamBaseException
      Deprecated.
      Use the TupleJSONUtil.SetTupleFromJSON Builder and its .process() to handle this functionality
      Set the fields of a tuple based on the contents of a JSON object
      Parameters:
      tuple - the tuple to set
      jsonObject - the JSON object; must have at least the fields of the tuple's schema
      strict - whether to throw an exception when fields are missing from tuple's schema
      timestampFormat - the timestamp format to use when converting
      numericTimestampsAsInterval - If true any numeric values in a timestamp field will be converted to interval types, if false they are considered a timestamp
      Throws:
      StreamBaseException - error initializing tuple from JSON
    • setTupleFromJSON

      @Deprecated public static void setTupleFromJSON(Tuple tuple, String JSONString) throws StreamBaseException
      Deprecated.
      Use the TupleJSONUtil.SetTupleFromJSON Builder and its .process() to handle this functionality
      Set the fields of a tuple based on the contents of a JSON string
      Parameters:
      tuple - the tuple to set
      JSONString - the JSON string; must have at least the fields of the tuple's schema
      Throws:
      StreamBaseException - conversion to tuple error
    • setTupleFromJSON

      @Deprecated public static void setTupleFromJSON(Tuple tuple, String JSONString, String timestampFormat) throws StreamBaseException
      Deprecated.
      Use the TupleJSONUtil.SetTupleFromJSON Builder and its .process() to handle this functionality
      Set the fields of a tuple based on the contents of a JSON string
      Parameters:
      tuple - the tuple to set
      JSONString - the JSON string; must have at least the fields of the tuple's schema
      timestampFormat - the timestamp format to use when converting
      Throws:
      StreamBaseException - conversion to tuple error
    • setTupleFromJSON

      @Deprecated public static void setTupleFromJSON(Tuple tuple, String JSONString, String timestampFormat, boolean numericTimestampsAsInterval) throws StreamBaseException
      Deprecated.
      Use the TupleJSONUtil.SetTupleFromJSON Builder and its .process() to handle this functionality
      Set the fields of a tuple based on the contents of a JSON string
      Parameters:
      tuple - the tuple to set
      JSONString - the JSON string; must have at least the fields of the tuple's schema
      timestampFormat - the timestamp format to use when converting
      numericTimestampsAsInterval - If true any numeric values in a timestamp field will be converted to interval types, if false they are considered a timestamp
      Throws:
      StreamBaseException - conversion to tuple error
    • setTupleFromJSONLoose

      @Deprecated public static void setTupleFromJSONLoose(Tuple tuple, String JSONString) throws StreamBaseException
      Deprecated.
      Use the TupleJSONUtil.SetTupleFromJSON Builder and its .process() to handle this functionality
      Set the fields of a tuple based on the contents of a JSON string. If the JSON string does not have enough fields as specified in the tuple, these will just be populated with nulls.
      Parameters:
      tuple - the tuple to set
      JSONString - the JSON string; must have at least the fields of the tuple's schema
      Throws:
      StreamBaseException - conversion to tuple error
    • setTupleFromJSONLoose

      @Deprecated public static void setTupleFromJSONLoose(Tuple tuple, String JSONString, String timestampFormat) throws StreamBaseException
      Deprecated.
      Use the TupleJSONUtil.SetTupleFromJSON Builder and its .process() to handle this functionality
      Set the fields of a tuple based on the contents of a JSON string. If the JSON string does not have enough fields as specified in the tuple, these will just be populated with nulls.
      Parameters:
      tuple - the tuple to set
      JSONString - the JSON string; must have at least the fields of the tuple's schema
      timestampFormat - timestamp format
      Throws:
      StreamBaseException - conversion to tuple error
    • setTupleFromJSONLoose

      @Deprecated public static void setTupleFromJSONLoose(Tuple tuple, String JSONString, String timestampFormat, boolean numericTimestampsAsInterval) throws StreamBaseException
      Deprecated.
      Use the TupleJSONUtil.SetTupleFromJSON Builder and its .process() to handle this functionality
      Set the fields of a tuple based on the contents of a JSON string. If the JSON string does not have enough fields as specified in the tuple, these will just be populated with nulls.
      Parameters:
      tuple - the tuple to set
      JSONString - the JSON string; must have at least the fields of the tuple's schema
      timestampFormat - timestamp format
      numericTimestampsAsInterval - If true any numeric values in a timestamp field will be converted to interval types, if false they are considered a timestamp
      Throws:
      StreamBaseException - conversion to tuple error
    • parseJSONString

      public static com.fasterxml.jackson.databind.JsonNode parseJSONString(String json) throws StreamBaseException
      Parse JSON string into a JSON object
      Parameters:
      json - json to parse
      Returns:
      a object from JSON
      Throws:
      StreamBaseException - parse error
    • parseJSONStringWithoutThrowsException

      public static com.fasterxml.jackson.databind.JsonNode parseJSONStringWithoutThrowsException(String json)
      Parse JSON string into a JSON object
      Parameters:
      json - json to parse
      Returns:
      a object from JSON
    • toJSONString

      public static String toJSONString(Tuple t, EnumSet<TupleJSONUtil.Options> options)
      Convert a tuple to its JSON representation.
      Parameters:
      t - The tuple to serialize
      options - The serialization options TupleJSONUtil.Options
      Returns:
      the JSON string
    • toJSONString

      public static String toJSONString(Tuple t, EnumSet<TupleJSONUtil.Options> options, String timestampFormat)
      Convert a tuple to its JSON representation.
      Parameters:
      t - The tuple to serialize
      options - The serialization options TupleJSONUtil.Options
      timestampFormat - the timestamp format to use when converting
      Returns:
      the JSON string
    • toJSONMapString

      public static String toJSONMapString(Tuple tuple, String timeStampFormat)
      Return the JSON string representation of the supplied tuple. Prefer maps to lists for expressing hierarchy. If tuple includes timestamp, format it based on timeStampFormat.
      Parameters:
      tuple - The tuple to serialize
      timeStampFormat - the timestamp format to use when converting
      Returns:
      the JSON string
    • toJSONMapString

      public static String toJSONMapString(Tuple tuple)
      Return the JSON string representation of the supplied tuple. Prefer maps to lists for expressing hierarchy.
      Parameters:
      tuple - The tuple to serialize
      Returns:
      the JSON string
    • toJSONListString

      public static String toJSONListString(Tuple tuple, String timeStampFormat)
      Return the JSON string representation of the supplied tuple. Prefer lists to maps for expressing hierarchy. If tuple includes timestamp, format it based on timeStampFormat.
      Parameters:
      tuple - The tuple to serialize
      timeStampFormat - the timestamp format to use when converting
      Returns:
      the JSON string
    • toJSONListString

      public static String toJSONListString(Tuple tuple)
      Return the JSON string representation of the supplied tuple. Prefer lists to maps for expressing hierarchy.
      Parameters:
      tuple - The tuple to serialize
      Returns:
      the JSON string
    • toJSONMapStringSingleQuote

      public static String toJSONMapStringSingleQuote(Tuple tuple)
      Return the single quote JSON string representation of the supplied tuple. Prefer maps to lists for expressing hierarchy.
      Parameters:
      tuple - The tuple to serialize
      Returns:
      the JSON string
    • toJSONString

      public static String toJSONString(Collection<Tuple> tuples)
      Parameters:
      tuples - the tuples to convert to JSON
      Returns:
      a string of JSON representing an array of tuples