deephaven.json¶
The deephaven JSON module presents a declarative and composable configuration layer for describing the structure of a JSON (https://www.json.org) value. Most commonly, this will be used to model the structure for a JSON object. For example, the JSON object
{ "name": "Foo", "age": 42, "location": { "lat": 45.018269, "lon": -93.473892 } }
can be modelled with the dictionary
{ "name": str, "age": int, "location": { "lat": float, "lon": float } }
Notice that this allows for the nested modelling of JSON values. Other common constructions involve the modelling of JSON arrays. For example, a variable-length JSON array where the elements are the same type
[42, 31, ..., 12345]
can be modelled with a single-element list containing the element type
[ int ]
If the JSON array is a fixed size and each elements’ type is known, for example
["Foo", 42, [45.018269, -93.473892]]
can be modelled with a tuple containing each type
(str, int, (float, float))
Notice again that this allows for the nested modelling of JSON values. Of course, these constructions can be all be used together. For example, the JSON object
{
"name": "Foo",
"locations": [
[45.018269, -93.473892],
...,
[40.730610, -73.935242]
]
}
can be modelled as
{"name": str, "locations": [(float, float)]}
See the methods in this module more more details on modelling JSON values.
- class JsonValue(j_value)[source]¶
Bases:
JObjectWrapper
The JSON Value type.
- j_object_type¶
alias of
Value
- JsonValueType¶
The JSON value alias
alias of
Union
[JsonValue
,DType
,type
,Dict
[str
,Union
[JsonValueType
,ObjectField
]],List
[JsonValueType
],Tuple
[JsonValueType
, …]]
- class ObjectField(value_type, aliases=<factory>, repeated_behavior=RepeatedFieldBehavior.ERROR, case_sensitive=True)[source]¶
Bases:
object
The object field options.
In contexts where the user needs to create an object field value and isn’t changing any default values, the user can simplify by just using the JsonValueType. For example,
{ "name": ObjectField(str), "age": ObjectField(int), }
could be simplified to
{ "name": str, "age": int, }
- aliases¶
The field name aliases. By default, is an empty list.
- case_sensitive = True¶
If the field name and aliases should be compared using case-sensitive equality. By default, is True.
- repeated_behavior = io.deephaven.json.ObjectField$RepeatedBehavior(objectRef=0x56435b4cd10a)¶
The repeated field behavior. By default, is RepeatedFieldBehavior.ERROR.
- value_type¶
The json value type
- class RepeatedFieldBehavior(value)[source]¶
Bases:
Enum
The behavior to use when a repeated field is encountered in a JSON object. For example,
{ "foo": 42, "foo": 43 }
- ERROR = io.deephaven.json.ObjectField$RepeatedBehavior(objectRef=0x56435b4cd10a)¶
Raise an error
- USE_FIRST = io.deephaven.json.ObjectField$RepeatedBehavior(objectRef=0x56435b4cd112)¶
Use the first field
- any_val()[source]¶
Creates an “any” value. The resulting type is implementation dependant.
- Return type:
- Returns:
the “any” value
- array_val(element, allow_missing=True, allow_null=True)[source]¶
Creates a “typed array”, where all elements of the array have the same element type. For example, the JSON array
[1, 42, 43, 13]
might be modelled as an array of ints
array_val(int)
In contexts where the user needs to create a JsonValueType and isn’t changing any default values, the user can simplify by using a list with a single element type. For example,
some_method(array_val(element))
could be simplified to
some_method([element])
- Parameters:
element (JsonValueType) – the array element type
allow_missing (bool) – if the array is allowed to be missing, by default is True
allow_null (bool) – if the array is allowed to be a JSON null type, by default is True
- Return type:
- Returns:
the array value
- big_decimal_val(allow_string=False, allow_missing=True, allow_null=True, on_missing=None, on_null=None)[source]¶
Creates a BigDecimal value. For example, the JSON decimal
123456789012345678901.42
might be modelled as the BigDecimal type
big_decimal_val()
- Parameters:
allow_string (bool) – if the BigDecimal value is allowed to be a JSON string type, default is False.
allow_missing (bool) – if the BigDecimal value is allowed to be missing, default is True
allow_null (bool) – if the BigDecimal value is allowed to be a JSON null type, default is True
on_missing (Optional[Union[float, str]]) – the value to use when the JSON value is missing and allow_missing is True, default is None.
on_null (Optional[Union[float, str]]) – the value to use when the JSON value is null and allow_null is True, default is None.
- Return type:
- Returns:
the BigDecimal value
- big_integer_val(allow_string=False, allow_decimal=False, allow_missing=True, allow_null=True, on_missing=None, on_null=None)[source]¶
Creates a BigInteger value. For example, the JSON integer
123456789012345678901
might be modelled as the BigInteger type
big_integer_val()
- Parameters:
allow_string (bool) – if the BigInteger value is allowed to be a JSON string type, default is False.
allow_decimal (bool) – if the BigInteger value is allowed to be a JSON decimal type, default is False.
allow_missing (bool) – if the BigInteger value is allowed to be missing, default is True
allow_null (bool) – if the BigInteger value is allowed to be a JSON null type, default is True
on_missing (Optional[Union[int, str]]) – the value to use when the JSON value is missing and allow_missing is True, default is None.
on_null (Optional[Union[int, str]]) – the value to use when the JSON value is null and allow_null is True, default is None.
- Return type:
- Returns:
the BigInteger value
- bool_val(allow_string=False, allow_missing=True, allow_null=True, on_missing=None, on_null=None)[source]¶
Creates a bool value. For example, the JSON boolean
True
might be modelled as the bool type
bool_val()
In contexts where the user needs to create a JsonValueType and isn’t changing any default values, the user can simplify by using the python built-in bool type. For example,
some_method(bool_val())
could be simplified to
some_method(bool)
- Parameters:
allow_string (bool) – if the bool value is allowed to be a JSON string type, default is False
allow_missing (bool) – if the bool value is allowed to be missing, default is True
allow_null (bool) – if the bool value is allowed to be a JSON null type, default is True
on_missing (Optional[bool]) – the value to use when the JSON value is missing and allow_missing is True, default is None
on_null (Optional[bool]) – the value to use when the JSON value is null and allow_null is True, default is None
- Return type:
- Returns:
the bool value
- byte_val(allow_decimal=False, allow_string=False, allow_missing=True, allow_null=True, on_missing=None, on_null=None)[source]¶
Creates a byte (signed 8-bit) value. For example, the JSON integer
42
might be modelled as the byte type
byte_val()
- Parameters:
allow_decimal (bool) – if the byte value is allowed to be a JSON decimal type, default is False
allow_string (bool) – if the byte value is allowed to be a JSON string type, default is False
allow_missing (bool) – if the byte value is allowed to be missing, default is True
allow_null (bool) – if the byte value is allowed to be a JSON null type, default is True
on_missing (Optional[int]) – the value to use when the JSON value is missing and allow_missing is True, default is None.
on_null (Optional[int]) – the value to use when the JSON value is null and allow_null is True, default is None.
- Return type:
- Returns:
the byte value
- char_val(allow_missing=True, allow_null=True, on_missing=None, on_null=None)[source]¶
Creates a char value. For example, the JSON string
"F"
might be modelled as the char type
char_val()
- Parameters:
allow_missing (bool) – if the char value is allowed to be missing, default is True
allow_null (bool) – if the char value is allowed to be a JSON null type, default is True
on_missing (Optional[str]) – the value to use when the JSON value is missing and allow_missing is True, default is None. If specified, must be a single character.
on_null (Optional[str]) – the value to use when the JSON value is null and allow_null is True, default is None. If specified, must be a single character.
- Return type:
- Returns:
the char value
- double_val(allow_string=False, allow_missing=True, allow_null=True, on_missing=None, on_null=None)[source]¶
Creates a double (signed 64-bit) value. For example, the JSON decimal
42.42424242
might be modelled as the double type
double_val()
In contexts where the user needs to create a JsonValueType and isn’t changing any default values, the user can simplify by using the python built-in float type. For example,
some_method(double_val())
could be simplified to
some_method(float)
- Parameters:
allow_string (bool) – if the double value is allowed to be a JSON string type, default is False
allow_missing (bool) – if the double value is allowed to be missing, default is True
allow_null (bool) – if the double value is allowed to be a JSON null type, default is True
on_missing (Optional[int]) – the value to use when the JSON value is missing and allow_missing is True, default is None.
on_null (Optional[int]) – the value to use when the JSON value is null and allow_null is True, default is None.
- Return type:
- Returns:
the double value
- float_val(allow_string=False, allow_missing=True, allow_null=True, on_missing=None, on_null=None)[source]¶
Creates a float (signed 32-bit) value. For example, the JSON decimal
42.42
might be modelled as the float type
float_val()
- Parameters:
allow_string (bool) – if the float value is allowed to be a JSON string type, default is False
allow_missing (bool) – if the float value is allowed to be missing, default is True
allow_null (bool) – if the float value is allowed to be a JSON null type, default is True
on_missing (Optional[float]) – the value to use when the JSON value is missing and allow_missing is True, default is None.
on_null (Optional[float]) – the value to use when the JSON value is null and allow_null is True, default is None.
- Return type:
- Returns:
the float value
- instant_val(allow_missing=True, allow_null=True, number_format=None, allow_decimal=False, on_missing=None, on_null=None)[source]¶
Creates an Instant value. For example, the JSON string
"2009-02-13T23:31:30.123456789Z"
might be modelled as the Instant type
instant_val()
In another example, the JSON decimal
1234567890.123456789
might be modelled as the Instant type
instant_val(number_format="s", allow_decimal=True)
In contexts where the user needs to create a JsonValueType and isn’t changing any default values, the user can simplify by using the python datetime.datetime type. For example,
some_method(instant_val())
could be simplified to
some_method(datetime.datetime)
- Parameters:
allow_missing (bool) – if the Instant value is allowed to be missing, default is True
allow_null (bool) – if the Instant value is allowed to be a JSON null type, default is True
number_format (Literal[None, "s", "ms", "us", "ns"]) – when set, signifies that a JSON numeric type is expected. “s” is for seconds, “ms” is for milliseconds, “us” is for microseconds, and “ns” is for nanoseconds since the epoch. When not set, a JSON string in the ISO-8601 format is expected.
allow_decimal (bool) – if the Instant value is allowed to be a JSON decimal type, default is False. Only valid when number_format is specified.
on_missing (Optional[InstantLike]) – the value to use when the JSON value is missing and allow_missing is True, default is None.
on_null (Optional[InstantLike]) – the value to use when the JSON value is null and allow_null is True, default is None.
- Return type:
- Returns:
the Instant value
- int_val(allow_decimal=False, allow_string=False, allow_missing=True, allow_null=True, on_missing=None, on_null=None)[source]¶
Creates an int (signed 32-bit) value. For example, the JSON integer
100000
might be modelled as the int type
int_val()
- Parameters:
allow_decimal (bool) – if the int value is allowed to be a JSON decimal type, default is False
allow_string (bool) – if the int value is allowed to be a JSON string type, default is False
allow_missing (bool) – if the int value is allowed to be missing, default is True
allow_null (bool) – if the int value is allowed to be a JSON null type, default is True
on_missing (Optional[int]) – the value to use when the JSON value is missing and allow_missing is True, default is None.
on_null (Optional[int]) – the value to use when the JSON value is null and allow_null is True, default is None.
- Return type:
- Returns:
the int value
- json_val(json_value_type)[source]¶
Creates a JsonValue from a JsonValueType.
JsonValue is returned unchanged
bool returns bool_val()
int returns long_val()
float returns double_val()
str returns string_val()
datetime.datetime returns instant_val()
object returns any_val()
Dictionaries returns object_val(json_value_type)
Lists of length 1 returns array_val(json_value_type[0]) (Lists of other sizes are not supported)
Tuples returns tuple_val(json_value_type)
- Parameters:
json_value_type (JsonValueType) – the JSON value type
- Return type:
- Returns:
the JSON value
- long_val(allow_decimal=False, allow_string=False, allow_missing=True, allow_null=True, on_missing=None, on_null=None)[source]¶
Creates a long (signed 64-bit) value. For example, the JSON integer
8000000000
might be modelled as the long type
long_val()
In contexts where the user needs to create a JsonValueType and isn’t changing any default values, the user can simplify by using the python built-in long type. For example,
some_method(long_val())
could be simplified to
some_method(int)
- Parameters:
allow_decimal (bool) – if the long value is allowed to be a JSON decimal type, default is False
allow_string (bool) – if the long value is allowed to be a JSON string type, default is False
allow_missing (bool) – if the long value is allowed to be missing, default is True
allow_null (bool) – if the long value is allowed to be a JSON null type, default is True
on_missing (Optional[int]) – the value to use when the JSON value is missing and allow_missing is True, default is None.
on_null (Optional[int]) – the value to use when the JSON value is null and allow_null is True, default is None.
- Return type:
- Returns:
the long value
- object_entries_val(value_type, key_type=<class 'str'>, allow_missing=True, allow_null=True)[source]¶
Creates an object entries value. This is used in situations where the number of fields in an object is variable and all the values types are the same. For example, the JSON object
{ "foo": 1, "bar": 42, "baz": 3, ... "xyz": 100 }
might be modelled as the object kv type
object_entries_val(int)
- Parameters:
value_type (JsonValueType) – the value type element, required
key_type (JsonValueType) – the key type element, by default is type str
allow_missing (bool) – if the object is allowed to be missing, by default is True
allow_null (bool) – if the object is allowed to be a JSON null type, by default is True
- Return type:
- Returns:
the object entries value
- object_val(fields, allow_unknown_fields=True, allow_missing=True, allow_null=True, repeated_field_behavior=RepeatedFieldBehavior.ERROR, case_sensitive=True)[source]¶
Creates an object value. For example, the JSON object
{ "name": "foo", "age": 42 }
might be modelled as the object type
object_val({ "name": str, "age": int })
In contexts where the user needs to create a JsonValueType and isn’t changing any default values, the user can simplify by using a Dict[str, Union[JsonValueType, ObjectField]]. For example,
some_method(object_val({ "name": str, "age": int }))
could be simplified to
some_method({ "name": str, "age": int })
- Parameters:
fields (Dict[str, Union[JsonValueType, ObjectField]]) – the fields
allow_unknown_fields (bool) – if unknown fields are allow, by default is True
allow_missing (bool) – if the object is allowed to be missing, by default is True
allow_null (bool) – if the object is allowed to be a JSON null type, by default is True
repeated_field_behavior (RepeatedFieldBehavior) – the default repeated field behavior, only used for fields that are specified using JsonValueType, by default is RepeatedFieldBehavior.ERROR
case_sensitive (bool) – if the field name and aliases should be compared using case-sensitive equality, only used for fields that are specified using JsonValueType, by default is True
- Return type:
- Returns:
the object value
- short_val(allow_decimal=False, allow_string=False, allow_missing=True, allow_null=True, on_missing=None, on_null=None)[source]¶
Creates a short (signed 16-bit) value. For example, the JSON integer
30000
might be modelled as the short type
short_val()
- Parameters:
allow_decimal (bool) – if the short value is allowed to be a JSON decimal type, default is False
allow_string (bool) – if the short value is allowed to be a JSON string type, default is False
allow_missing (bool) – if the short value is allowed to be missing, default is True
allow_null (bool) – if the short value is allowed to be a JSON null type, default is True
on_missing (Optional[int]) – the value to use when the JSON value is missing and allow_missing is True, default is None.
on_null (Optional[int]) – the value to use when the JSON value is null and allow_null is True, default is None.
- Return type:
- Returns:
the short value
- skip_val(allow_missing=None, allow_null=None, allow_int=None, allow_decimal=None, allow_string=None, allow_bool=None, allow_object=None, allow_array=None, allow_by_default=True)[source]¶
Creates a “skip” value. No resulting type will be returned, but the JSON types will be validated as configured. This may be useful in combination with an object type where allow_unknown_fields=False. For example, the JSON object
{ "name": "foo", "age": 42 }
might be modelled as the object type
object_val({ "name": str, "age": skip_val() }, allow_unknown_fields=False)
- Parameters:
allow_missing (Optional[bool]) – if a missing JSON value is allowed, by default is None
allow_null (Optional[bool]) – if a JSON null type is allowed, by default is None
allow_int (Optional[bool]) – if a JSON integer type is allowed, by default is None
allow_decimal (Optional[bool]) – if a JSON decimal type is allowed, by default is None
allow_string (Optional[bool]) – if a JSON string type is allowed, by default is None
allow_bool (Optional[bool]) – if a JSON boolean type is allowed, by default is None
allow_object (Optional[bool]) – if a JSON object type is allowed, by default is None
allow_array (Optional[bool]) – if a JSON array type is allowed, by default is None
allow_by_default (bool) – the default behavior for the other arguments when they are set to None, by default is True
- Return type:
- Returns:
the “skip” value
- string_val(allow_int=False, allow_decimal=False, allow_bool=False, allow_missing=True, allow_null=True, on_missing=None, on_null=None)[source]¶
Creates a String value. For example, the JSON string
"Hello, world!"
might be modelled as the string type
string_val()
In contexts where the user needs to create a JsonValueType and isn’t changing any default values, the user can simplify by using the python built-in str type. For example,
some_method(string_val())
could be simplified to
some_method(str)
- Parameters:
allow_int (bool) – if the string value is allowed to be a JSON integer type, default is False
allow_decimal (bool) – if the string value is allowed to be a JSON decimal type, default is False
allow_bool (bool) – if the string value is allowed to be a JSON boolean type, default is False
allow_missing (bool) – if the double value is allowed to be missing, default is True
allow_null (bool) – if the double value is allowed to be a JSON null type, default is True
on_missing (Optional[str]) – the value to use when the JSON value is missing and allow_missing is True, default is None.
on_null (Optional[str]) – the value to use when the JSON value is null and allow_null is True, default is None.
- Return type:
- Returns:
the String value
- tuple_val(values, allow_missing=True, allow_null=True)[source]¶
Creates a tuple value. For example, the JSON array
["foo", 42, 5.72]
might be modelled as the tuple type
tuple_val((str, int, float))
To provide meaningful names, a dictionary can be used:
tuple_val({"name": str, "age": int, "height": float})
otherwise, default names based on the indexes of the values will be used.
In contexts where the user needs to create a JsonValueType and isn’t changing any default values nor is setting names, the user can simplify passing through a python tuple type. For example,
some_method(tuple_val((tuple_type_1, tuple_type_2)))
could be simplified to
some_method((tuple_type_1, tuple_type_2))
- Parameters:
values (Union[Tuple[JsonValueType, ...], Dict[str, JsonValueType]]) – the tuple value types
allow_missing (bool) – if the array is allowed to be missing, by default is True
allow_null (bool) – if the array is allowed to be a JSON null type, by default is True
- Return type:
- Returns:
the tuple value
- typed_object_val(type_field, shared_fields, objects, allow_unknown_types=True, allow_missing=True, allow_null=True, on_missing=None, on_null=None)[source]¶
Creates a type-discriminated object value. For example, the JSON objects
{ "type": "trade", "symbol": "FOO", "price": 70.03, "size": 42 }
{ "type": "quote", "symbol": "BAR", "bid": 10.01, "ask": 10.05 }
might be modelled as a type-discriminated object with “type” as the type field, “symbol” as a shared field, with a “trade” object containing a “bid” and an “ask” field, and with a “quote” object containing a “price” and a “size” field:
typed_object_val( "type", {"symbol": str}, { "quote": { "price": float, "size": int }, "trade": { "bid": float, "ask": float } } )
- Parameters:
type_field (str) – the type-discriminating field
shared_fields (Dict[str, Union[JsonValueType, ObjectField]]) – the shared fields
objects (Dict[str, Union[JsonValueType, ObjectField]]) – the individual objects, keyed by their type-discriminated value. The values must be object options.
allow_unknown_types (bool) – if unknown types are allow, by default is True
allow_missing (bool) – if the object is allowed to be missing, by default is True
allow_null (bool) – if the object is allowed to be a JSON null type, by default is True
on_missing (Optional[str]) – the type value to use when the JSON value is missing and allow_missing is True, default is None
on_null (Optional[str]) – the type value to use when the JSON value is null and allow_null is True, default is None
- Return type:
- Returns:
the typed object value