Class TupleJSONUtil

  • All Implemented Interfaces:
    JsonUtils

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

      • 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:
        Constant Field Values
      • 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:
        Constant Field Values
      • 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:
        Constant Field Values
      • 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:
        Constant Field Values
      • JSON_TO_TUPLE_TIMESTAMP_PARSE_ERROR

        public static final String JSON_TO_TUPLE_TIMESTAMP_PARSE_ERROR
        Error message: timestamp parse error
        See Also:
        Constant Field Values
      • 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:
        Constant Field Values
      • 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:
        Constant Field Values
      • JSON_TO_FUNCTION_UNKNOWN_ATTRIBUTES_ERROR

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

        public static final String TO_JSON_OPTIONS_ERROR
        Error message: "PREFER_LIST and PREFER_MAP are mutually exclusive
        See Also:
        Constant Field Values
    • Method Detail

      • 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)
      • setTuple

        public static void setTuple​(Tuple tuple,
                                    Object jsonObject,
                                    boolean strict)
                             throws StreamBaseException
        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

        public static void setTuple​(Tuple tuple,
                                    Object jsonObject,
                                    boolean strict,
                                    String timestampFormat)
                             throws StreamBaseException
        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

        public static void setTuple​(Tuple tuple,
                                    Object jsonObject,
                                    boolean strict,
                                    String timestampFormat,
                                    boolean numericTimestampsAsInterval)
                             throws StreamBaseException
        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 timestamp
        Throws:
        StreamBaseException - error initializing tuple from JSON
      • setTupleFromJSON

        public static void setTupleFromJSON​(Tuple tuple,
                                            String JSONString)
                                     throws StreamBaseException
        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

        public static void setTupleFromJSON​(Tuple tuple,
                                            String JSONString,
                                            String timestampFormat)
                                     throws StreamBaseException
        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

        public static void setTupleFromJSON​(Tuple tuple,
                                            String JSONString,
                                            String timestampFormat,
                                            boolean numericTimestampsAsInterval)
                                     throws StreamBaseException
        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 timestamp
        Throws:
        StreamBaseException - conversion to tuple error
      • setTupleFromJSONLoose

        public static void setTupleFromJSONLoose​(Tuple tuple,
                                                 String JSONString)
                                          throws StreamBaseException
        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

        public static void setTupleFromJSONLoose​(Tuple tuple,
                                                 String JSONString,
                                                 String timestampFormat)
                                          throws StreamBaseException
        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

        public static void setTupleFromJSONLoose​(Tuple tuple,
                                                 String JSONString,
                                                 String timestampFormat,
                                                 boolean numericTimestampsAsInterval)
                                          throws StreamBaseException
        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 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,
                                          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