Package jsonvalues
Class JsObj
- java.lang.Object
-
- jsonvalues.JsObj
-
public class JsObj extends Object implements Json<JsObj>, Iterable<io.vavr.Tuple2<String,JsValue>>
Represents a json object, which is an unordered set of name/element pairs. Two implementations are provided, an immutable which uses the persistent Scala HashMap, and a mutable which uses the conventional Java HashMap.
-
-
Field Summary
Fields Modifier and Type Field Description static JsObj
EMPTY
static JsOptics.JsObjLenses
lens
lenses defined for a Json objectstatic JsOptics.JsObjOptional
optional
optionals defined for a Json objectstatic fun.optic.Prism<JsValue,JsObj>
prism
prism between the sum type JsValue and JsObjstatic int
TYPE_ID
-
Constructor Summary
Constructors Constructor Description JsObj()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
containsKey(String key)
return true if the key is presentboolean
containsValue(JsValue el)
Returns true if this json contains the given element in the first level.JsObj
delete(String key)
JsObj
delete(JsPath path)
Removes the element in this json located at the given path, if it exists, returning the same this instance otherwisestatic JsObj
empty()
boolean
equals(Object that)
boolean
equals(JsObj that, JsArray.TYPE ARRAY_AS)
return true if this obj is equal to the given as a parameter.JsObj
filterAllKeys(BiPredicate<? super JsPath,? super JsValue> filter)
Filters all the keys of this json, removing those that don't ifPredicateElse the predicate.JsObj
filterAllKeys(Predicate<? super String> filter)
Filters all the keys of this json, removing those that don't ifPredicateElse the predicate.JsObj
filterAllObjs(BiPredicate<? super JsPath,? super JsObj> filter)
Filters all the pair of jsons of this json, removing those that don't ifPredicateElse the predicate.JsObj
filterAllObjs(Predicate<? super JsObj> filter)
Filters all the pair of jsons of this json, removing those that don't ifPredicateElse the predicate.JsObj
filterAllValues(BiPredicate<? super JsPath,? super JsPrimitive> filter)
Filters all the pairs of elements of this json, removing those that don't ifPredicateElse the predicate.JsObj
filterAllValues(Predicate<? super JsPrimitive> filter)
Filters all the pairs of elements of this json, removing those that don't ifPredicateElse the predicate.JsObj
filterKeys(BiPredicate<? super String,? super JsValue> filter)
JsObj
filterKeys(Predicate<? super String> filter)
Filters the keys in the first level of this json, removing those that don't ifPredicateElse the predicate.JsObj
filterObjs(BiPredicate<? super String,? super JsObj> filter)
JsObj
filterObjs(Predicate<? super JsObj> filter)
Filters the pair of jsons in the first level of this json, removing those that don't ifPredicateElse the predicate.JsObj
filterValues(BiPredicate<? super String,? super JsPrimitive> filter)
JsObj
filterValues(Predicate<? super JsPrimitive> filter)
Filters the pairs of elements in the first level of this json, removing those that don't ifPredicateElse the predicate.JsValue
get(String key)
JsValue
get(JsPath path)
Returns the element located at the given path orJsNothing
if it doesn't exist.JsArray
getArray(String key)
Returns the array located at the given key or null if it doesn't exist or it's not an array.JsArray
getArray(String key, Supplier<JsArray> orElse)
Returns the array located at the given key or the default value provided if it doesn't exist or it's not an array.BigDecimal
getBigDec(String key)
Returns the number located at the given key as a big decimal or null if it doesn't exist or it's not a decimal number.BigDecimal
getBigDec(String key, Supplier<BigDecimal> orElse)
Returns the number located at the given key as a big decimal or the default value provided if it doesn't exist or it's not a decimal number.BigInteger
getBigInt(String key)
Returns the big integer located at the given key as a big integer or null if it doesn't exist or it's not an integral number.BigInteger
getBigInt(String key, Supplier<BigInteger> orElse)
Returns the big integer located at the given key as a big integer or the default value provided if it doesn't exist or it's not an integral number.byte[]
getBinary(String key)
Returns the bytes located at the given key or null if it doesn't exist or it's not an array of bytes.byte[]
getBinary(String key, Supplier<byte[]> orElse)
Returns the bytes located at the given key or the default value provided if it doesn't exist or it's not an array of bytes.Boolean
getBool(String key)
Returns the boolean located at the given key or null if it doesn't exist.Boolean
getBool(String key, Supplier<Boolean> orElse)
Returns the boolean located at the given key or the default value provided if it doesn't exist.Double
getDouble(String key)
Returns the number located at the given key as a double or null if it doesn't exist or it's not a decimal number.Double
getDouble(String key, Supplier<Double> orElse)
Returns the number located at the given key as a double or the default value provided if it doesn't exist or it's not a decimal number.Instant
getInstant(String key)
Returns the instant located at the given key or null if it doesn't exist or it's not an instant.Instant
getInstant(String key, Supplier<Instant> orElse)
Returns the instant located at the given key or the default value provided if it doesn't exist or it's not an instant.Integer
getInt(String key)
Returns the integral number located at the given key as an integer or null if it doesn't exist or it's not an integral number or it's an integral number but doesn't fit in an integer.Integer
getInt(String key, Supplier<Integer> orElse)
Returns the integral number located at the given key as an integer or the default value provided if it doesn't exist or it's not an integral number or it's an integral number but doesn't fit in an integer.Long
getLong(String key)
Returns the integral number located at the given key as a long or null if it doesn't exist or it's not an integral number or it's an integral number but doesn't fit in a long.Long
getLong(String key, Supplier<Long> orElse)
Returns the integral number located at the given key as a long or the default value provided if it doesn't exist or it's not an integral number or it's an integral number but doesn't fit in a long.JsObj
getObj(String key)
Returns the json object located at the given key or null if it doesn't exist or it's not an object.JsObj
getObj(String key, Supplier<JsObj> orElse)
Returns the json object located at the given key or the default value provided if it doesn't exist or it's not an object.String
getStr(String key)
Returns the string located at the given key or null if it doesn't exist or it's not an string.String
getStr(String key, Supplier<String> orElse)
Returns the string located at the given key or the default value provided if it doesn't exist or it's not an string.int
hashCode()
equals method is inherited, so it's implemented.int
id()
JsObj
intersection(JsObj that, JsArray.TYPE ARRAY_AS)
this.intersection(that, SET)
returns an array with the elements that exist in boththis
andthat
this.intersection(that, MULTISET)
returns an array with the elements that exist in boththis
andthat
, being duplicates allowed.JsObj
intersectionAll(JsObj that, JsArray.TYPE ARRAY_AS)
this.intersectionAll(that)
behaves asthis.intersection(that, LIST)
, but for those elements that are containers of the same type and are located at the same position, the result is their intersection.boolean
isEmpty()
return true if there's no element in this jsonboolean
isObj()
Returns true if this JsValue is a JsObjIterator<io.vavr.Tuple2<String,JsValue>>
iterator()
Set<String>
keySet()
Returns a set containing each key fo this object.JsObj
mapAllKeys(BiFunction<? super JsPath,? super JsValue,String> fn)
Maps all the keys of this json.JsObj
mapAllKeys(Function<? super String,String> fn)
Maps all the keys of this json.JsObj
mapAllObjs(BiFunction<? super JsPath,? super JsObj,? extends JsValue> fn)
Maps all the jsons of this json.JsObj
mapAllObjs(Function<? super JsObj,? extends JsValue> fn)
Maps all the jsons of this json.JsObj
mapAllValues(BiFunction<? super JsPath,? super JsPrimitive,? extends JsValue> fn)
Maps all the values of this json.JsObj
mapAllValues(Function<? super JsPrimitive,? extends JsValue> fn)
Maps all the values of this json.JsObj
mapKeys(BiFunction<? super String,? super JsValue,String> fn)
JsObj
mapKeys(Function<? super String,String> fn)
Maps the keys in the first level of this json.JsObj
mapObjs(BiFunction<? super String,? super JsObj,JsValue> fn)
JsObj
mapObjs(Function<? super JsObj,? extends JsValue> fn)
Maps the jsons in the first level of this json.JsObj
mapValues(BiFunction<? super String,? super JsPrimitive,? extends JsValue> fn)
JsObj
mapValues(Function<? super JsPrimitive,? extends JsValue> fn)
Maps the values in the first level of this json.static JsObj
of(String key, JsValue el)
static JsObj
of(String key1, JsValue el1, String key2, JsValue el2)
static JsObj
of(String key1, JsValue el1, String key2, JsValue el2, String key3, JsValue el3)
static JsObj
of(String key1, JsValue el1, String key2, JsValue el2, String key3, JsValue el3, String key4, JsValue el4)
static JsObj
of(String key1, JsValue el1, String key2, JsValue el2, String key3, JsValue el3, String key4, JsValue el4, String key5, JsValue el5)
static JsObj
of(String key1, JsValue el1, String key2, JsValue el2, String key3, JsValue el3, String key4, JsValue el4, String key5, JsValue el5, String key6, JsValue el6)
static JsObj
of(String key1, JsValue el1, String key2, JsValue el2, String key3, JsValue el3, String key4, JsValue el4, String key5, JsValue el5, String key6, JsValue el6, String key7, JsValue el7)
static JsObj
of(String key1, JsValue el1, String key2, JsValue el2, String key3, JsValue el3, String key4, JsValue el4, String key5, JsValue el5, String key6, JsValue el6, String key7, JsValue el7, String key8, JsValue el8)
static JsObj
of(String key1, JsValue el1, String key2, JsValue el2, String key3, JsValue el3, String key4, JsValue el4, String key5, JsValue el5, String key6, JsValue el6, String key7, JsValue el7, String key8, JsValue el8, String key9, JsValue el9)
static JsObj
of(String key1, JsValue el1, String key2, JsValue el2, String key3, JsValue el3, String key4, JsValue el4, String key5, JsValue el5, String key6, JsValue el6, String key7, JsValue el7, String key8, JsValue el8, String key9, JsValue el9, String key10, JsValue el10)
static JsObj
of(String key1, JsValue el1, String key2, JsValue el2, String key3, JsValue el3, String key4, JsValue el4, String key5, JsValue el5, String key6, JsValue el6, String key7, JsValue el7, String key8, JsValue el8, String key9, JsValue el9, String key10, JsValue el10, String key11, JsValue el11)
static JsObj
of(String key1, JsValue el1, String key2, JsValue el2, String key3, JsValue el3, String key4, JsValue el4, String key5, JsValue el5, String key6, JsValue el6, String key7, JsValue el7, String key8, JsValue el8, String key9, JsValue el9, String key10, JsValue el10, String key11, JsValue el11, String key12, JsValue el12)
static JsObj
of(String key1, JsValue el1, String key2, JsValue el2, String key3, JsValue el3, String key4, JsValue el4, String key5, JsValue el5, String key6, JsValue el6, String key7, JsValue el7, String key8, JsValue el8, String key9, JsValue el9, String key10, JsValue el10, String key11, JsValue el11, String key12, JsValue el12, String key13, JsValue el13)
static JsObj
of(String key1, JsValue el1, String key2, JsValue el2, String key3, JsValue el3, String key4, JsValue el4, String key5, JsValue el5, String key6, JsValue el6, String key7, JsValue el7, String key8, JsValue el8, String key9, JsValue el9, String key10, JsValue el10, String key11, JsValue el11, String key12, JsValue el12, String key13, JsValue el13, String key14, JsValue el14)
static JsObj
of(String key1, JsValue el1, String key2, JsValue el2, String key3, JsValue el3, String key4, JsValue el4, String key5, JsValue el5, String key6, JsValue el6, String key7, JsValue el7, String key8, JsValue el8, String key9, JsValue el9, String key10, JsValue el10, String key11, JsValue el11, String key12, JsValue el12, String key13, JsValue el13, String key14, JsValue el14, String key15, JsValue el15)
static JsObj
of(String key1, JsValue el1, String key2, JsValue el2, String key3, JsValue el3, String key4, JsValue el4, String key5, JsValue el5, String key6, JsValue el6, String key7, JsValue el7, String key8, JsValue el8, String key9, JsValue el9, String key10, JsValue el10, String key11, JsValue el11, String key12, JsValue el12, String key13, JsValue el13, String key14, JsValue el14, String key15, JsValue el15, String key16, JsValue el16)
static JsObj
of(String key1, JsValue el1, String key2, JsValue el2, String key3, JsValue el3, String key4, JsValue el4, String key5, JsValue el5, String key6, JsValue el6, String key7, JsValue el7, String key8, JsValue el8, String key9, JsValue el9, String key10, JsValue el10, String key11, JsValue el11, String key12, JsValue el12, String key13, JsValue el13, String key14, JsValue el14, String key15, JsValue el15, String key16, JsValue el16, String key17, JsValue el17)
static JsObj
of(String key1, JsValue el1, String key2, JsValue el2, String key3, JsValue el3, String key4, JsValue el4, String key5, JsValue el5, String key6, JsValue el6, String key7, JsValue el7, String key8, JsValue el8, String key9, JsValue el9, String key10, JsValue el10, String key11, JsValue el11, String key12, JsValue el12, String key13, JsValue el13, String key14, JsValue el14, String key15, JsValue el15, String key16, JsValue el16, String key17, JsValue el17, String key18, JsValue el18)
static JsObj
of(String key1, JsValue el1, String key2, JsValue el2, String key3, JsValue el3, String key4, JsValue el4, String key5, JsValue el5, String key6, JsValue el6, String key7, JsValue el7, String key8, JsValue el8, String key9, JsValue el9, String key10, JsValue el10, String key11, JsValue el11, String key12, JsValue el12, String key13, JsValue el13, String key14, JsValue el14, String key15, JsValue el15, String key16, JsValue el16, String key17, JsValue el17, String key18, JsValue el18, String key19, JsValue el19)
static JsObj
of(String key1, JsValue el1, String key2, JsValue el2, String key3, JsValue el3, String key4, JsValue el4, String key5, JsValue el5, String key6, JsValue el6, String key7, JsValue el7, String key8, JsValue el8, String key9, JsValue el9, String key10, JsValue el10, String key11, JsValue el11, String key12, JsValue el12, String key13, JsValue el13, String key14, JsValue el14, String key15, JsValue el15, String key16, JsValue el16, String key17, JsValue el17, String key18, JsValue el18, String key19, JsValue el19, String key20, JsValue el20)
static JsObj
of(JsPath path, JsValue el)
static JsObj
of(JsPath path1, JsValue el1, JsPath path2, JsValue el2)
static JsObj
of(JsPath path1, JsValue el1, JsPath path2, JsValue el2, JsPath path3, JsValue el3)
static JsObj
of(JsPath path1, JsValue el1, JsPath path2, JsValue el2, JsPath path3, JsValue el3, JsPath path4, JsValue el4)
static JsObj
of(JsPath path1, JsValue el1, JsPath path2, JsValue el2, JsPath path3, JsValue el3, JsPath path4, JsValue el4, JsPath path5, JsValue el5)
static JsObj
of(JsPath path1, JsValue el1, JsPath path2, JsValue el2, JsPath path3, JsValue el3, JsPath path4, JsValue el4, JsPath path5, JsValue el5, JsPath path6, JsValue el6)
static JsObj
of(JsPath path1, JsValue el1, JsPath path2, JsValue el2, JsPath path3, JsValue el3, JsPath path4, JsValue el4, JsPath path5, JsValue el5, JsPath path6, JsValue el6, JsPath path7, JsValue el7)
static JsObj
of(JsPath path1, JsValue el1, JsPath path2, JsValue el2, JsPath path3, JsValue el3, JsPath path4, JsValue el4, JsPath path5, JsValue el5, JsPath path6, JsValue el6, JsPath path7, JsValue el7, JsPath path8, JsValue el8)
static JsObj
of(JsPath path1, JsValue el1, JsPath path2, JsValue el2, JsPath path3, JsValue el3, JsPath path4, JsValue el4, JsPath path5, JsValue el5, JsPath path6, JsValue el6, JsPath path7, JsValue el7, JsPath path8, JsValue el8, JsPath path9, JsValue el9)
static JsObj
of(JsPath path1, JsValue el1, JsPath path2, JsValue el2, JsPath path3, JsValue el3, JsPath path4, JsValue el4, JsPath path5, JsValue el5, JsPath path6, JsValue el6, JsPath path7, JsValue el7, JsPath path8, JsValue el8, JsPath path9, JsValue el9, JsPath path10, JsValue el10)
static JsObj
of(JsPath path1, JsValue el1, JsPath path2, JsValue el2, JsPath path3, JsValue el3, JsPath path4, JsValue el4, JsPath path5, JsValue el5, JsPath path6, JsValue el6, JsPath path7, JsValue el7, JsPath path8, JsValue el8, JsPath path9, JsValue el9, JsPath path10, JsValue el10, JsPath path11, JsValue el11)
static JsObj
of(JsPath path1, JsValue el1, JsPath path2, JsValue el2, JsPath path3, JsValue el3, JsPath path4, JsValue el4, JsPath path5, JsValue el5, JsPath path6, JsValue el6, JsPath path7, JsValue el7, JsPath path8, JsValue el8, JsPath path9, JsValue el9, JsPath path10, JsValue el10, JsPath path11, JsValue el11, JsPath path12, JsValue el12)
static JsObj
of(JsPath path1, JsValue el1, JsPath path2, JsValue el2, JsPath path3, JsValue el3, JsPath path4, JsValue el4, JsPath path5, JsValue el5, JsPath path6, JsValue el6, JsPath path7, JsValue el7, JsPath path8, JsValue el8, JsPath path9, JsValue el9, JsPath path10, JsValue el10, JsPath path11, JsValue el11, JsPath path12, JsValue el12, JsPath path13, JsValue el13)
static JsObj
of(JsPath path1, JsValue el1, JsPath path2, JsValue el2, JsPath path3, JsValue el3, JsPath path4, JsValue el4, JsPath path5, JsValue el5, JsPath path6, JsValue el6, JsPath path7, JsValue el7, JsPath path8, JsValue el8, JsPath path9, JsValue el9, JsPath path10, JsValue el10, JsPath path11, JsValue el11, JsPath path12, JsValue el12, JsPath path13, JsValue el13, JsPath path14, JsValue el14)
static JsObj
of(JsPath path1, JsValue el1, JsPath path2, JsValue el2, JsPath path3, JsValue el3, JsPath path4, JsValue el4, JsPath path5, JsValue el5, JsPath path6, JsValue el6, JsPath path7, JsValue el7, JsPath path8, JsValue el8, JsPath path9, JsValue el9, JsPath path10, JsValue el10, JsPath path11, JsValue el11, JsPath path12, JsValue el12, JsPath path13, JsValue el13, JsPath path14, JsValue el14, JsPath path15, JsValue el15)
static JsObj
of(JsPath path1, JsValue el1, JsPath path2, JsValue el2, JsPath path3, JsValue el3, JsPath path4, JsValue el4, JsPath path5, JsValue el5, JsPath path6, JsValue el6, JsPath path7, JsValue el7, JsPath path8, JsValue el8, JsPath path9, JsValue el9, JsPath path10, JsValue el10, JsPath path11, JsValue el11, JsPath path12, JsValue el12, JsPath path13, JsValue el13, JsPath path14, JsValue el14, JsPath path15, JsValue el15, JsPath path16, JsValue el16)
static JsObj
of(JsPath path1, JsValue el1, JsPath path2, JsValue el2, JsPath path3, JsValue el3, JsPath path4, JsValue el4, JsPath path5, JsValue el5, JsPath path6, JsValue el6, JsPath path7, JsValue el7, JsPath path8, JsValue el8, JsPath path9, JsValue el9, JsPath path10, JsValue el10, JsPath path11, JsValue el11, JsPath path12, JsValue el12, JsPath path13, JsValue el13, JsPath path14, JsValue el14, JsPath path15, JsValue el15, JsPath path16, JsValue el16, JsPath path17, JsValue el17)
static JsObj
of(JsPath path1, JsValue el1, JsPath path2, JsValue el2, JsPath path3, JsValue el3, JsPath path4, JsValue el4, JsPath path5, JsValue el5, JsPath path6, JsValue el6, JsPath path7, JsValue el7, JsPath path8, JsValue el8, JsPath path9, JsValue el9, JsPath path10, JsValue el10, JsPath path11, JsValue el11, JsPath path12, JsValue el12, JsPath path13, JsValue el13, JsPath path14, JsValue el14, JsPath path15, JsValue el15, JsPath path16, JsValue el16, JsPath path17, JsValue el17, JsPath path18, JsValue el18)
static JsObj
of(JsPath path1, JsValue el1, JsPath path2, JsValue el2, JsPath path3, JsValue el3, JsPath path4, JsValue el4, JsPath path5, JsValue el5, JsPath path6, JsValue el6, JsPath path7, JsValue el7, JsPath path8, JsValue el8, JsPath path9, JsValue el9, JsPath path10, JsValue el10, JsPath path11, JsValue el11, JsPath path12, JsValue el12, JsPath path13, JsValue el13, JsPath path14, JsValue el14, JsPath path15, JsValue el15, JsPath path16, JsValue el16, JsPath path17, JsValue el17, JsPath path18, JsValue el18, JsPath path19, JsValue el19)
static JsObj
of(JsPath path1, JsValue el1, JsPath path2, JsValue el2, JsPath path3, JsValue el3, JsPath path4, JsValue el4, JsPath path5, JsValue el5, JsPath path6, JsValue el6, JsPath path7, JsValue el7, JsPath path8, JsValue el8, JsPath path9, JsValue el9, JsPath path10, JsValue el10, JsPath path11, JsValue el11, JsPath path12, JsValue el12, JsPath path13, JsValue el13, JsPath path14, JsValue el14, JsPath path15, JsValue el15, JsPath path16, JsValue el16, JsPath path17, JsValue el17, JsPath path18, JsValue el18, JsPath path19, JsValue el19, JsPath path20, JsValue el20)
static JsObj
parse(String str)
Tries to parse the string into an immutable object.static JsObj
parseYaml(String str)
Tries to parse a YAML string into an immutable object.<R> Optional<R>
reduce(BinaryOperator<R> op, BiFunction<? super String,? super JsPrimitive,R> map, BiPredicate<? super String,? super JsPrimitive> predicate)
Performs a reduction on the values that satisfy the predicate in the first level of this json.<R> Optional<R>
reduce(BinaryOperator<R> op, Function<? super JsPrimitive,R> map, Predicate<? super JsPrimitive> predicate)
Performs a reduction on the values that satisfy the predicate in the first level of this json.<R> Optional<R>
reduceAll(BinaryOperator<R> op, BiFunction<? super JsPath,? super JsPrimitive,R> map, BiPredicate<? super JsPath,? super JsPrimitive> predicate)
Performs a reduction on the values of this json that satisfy the predicate.<R> Optional<R>
reduceAll(BinaryOperator<R> op, Function<? super JsPrimitive,R> map, Predicate<? super JsPrimitive> predicate)
Performs a reduction on the values of this json that satisfy the predicate.JsObj
set(String key, JsValue value)
Inserts the element at the key in this json, replacing any existing element.JsObj
set(JsPath path, JsValue element)
Inserts the element at the path in this json, replacing any existing element and filling withJsNull
empty indexes in arrays when necessary.JsObj
set(JsPath path, JsValue value, JsValue padElement)
Inserts the element at the path in this json, replacing any existing element and filling with padElement empty indexes in arrays when necessary.int
size()
Returns the number of elements in the first level of this jsonStream<fun.tuple.Pair<JsPath,JsValue>>
stream()
Returns a stream over the pairs of elements in the first level of this json object.Stream<fun.tuple.Pair<JsPath,JsValue>>
streamAll()
Returns a stream over all the pairs of elements in this json object.Stream<JsValue>
streamValues()
String
toString()
// Single-check idiom Item 83 from effective javaJsObj
union(JsObj that)
returnsthis
json object plus those pairs from the given json objectthat
which keys don't exist inthis
.JsObj
unionAll(JsObj that, JsArray.TYPE ARRAY_AS)
behaves like theunion(JsObj)
but, for those keys that exit in boththis
andthat
json objects, which associated elements are **containers of the same type**, the result is their union.-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
Methods inherited from interface jsonvalues.Json
containsPath, equals, getArray, getArray, getBigDec, getBigDec, getBigInt, getBigInt, getBinary, getBinary, getBool, getBool, getDouble, getDouble, getInstant, getInstant, getInt, getInt, getLong, getLong, getObj, getObj, getStr, getStr, ifEmptyElse, isNotEmpty, serialize, serialize, sizeAll, times, timesAll, toJsPrimitive, toPrettyString, toPrettyString
-
Methods inherited from interface jsonvalues.JsValue
ifNothing, ifNull, isArray, isArray, isBigDec, isBigDec, isBigInt, isBigInt, isBinary, isBool, isDecimal, isDouble, isDouble, isFalse, isInstant, isInstant, isInt, isInt, isIntegral, isJson, isJson, isLong, isLong, isNothing, isNotNothing, isNotNull, isNotNumber, isNull, isNumber, isObj, isPrimitive, isSameType, isStr, isStr, isTrue, toJsArray, toJsBigDec, toJsBigInt, toJsBinary, toJsBool, toJsDouble, toJsInstant, toJsInt, toJsLong, toJsNumber, toJsObj, toJson, toJsStr
-
-
-
-
Field Detail
-
EMPTY
public static final JsObj EMPTY
-
lens
public static final JsOptics.JsObjLenses lens
lenses defined for a Json object
-
optional
public static final JsOptics.JsObjOptional optional
optionals defined for a Json object
-
prism
public static final fun.optic.Prism<JsValue,JsObj> prism
prism between the sum type JsValue and JsObj
-
TYPE_ID
public static final int TYPE_ID
- See Also:
- Constant Field Values
-
-
Method Detail
-
empty
public static JsObj empty()
-
of
public static JsObj of(String key1, JsValue el1, String key2, JsValue el2, String key3, JsValue el3)
-
of
public static JsObj of(JsPath path1, JsValue el1, JsPath path2, JsValue el2, JsPath path3, JsValue el3)
-
of
public static JsObj of(String key1, JsValue el1, String key2, JsValue el2, String key3, JsValue el3, String key4, JsValue el4)
-
of
public static JsObj of(JsPath path1, JsValue el1, JsPath path2, JsValue el2, JsPath path3, JsValue el3, JsPath path4, JsValue el4)
-
of
public static JsObj of(String key1, JsValue el1, String key2, JsValue el2, String key3, JsValue el3, String key4, JsValue el4, String key5, JsValue el5)
-
of
public static JsObj of(JsPath path1, JsValue el1, JsPath path2, JsValue el2, JsPath path3, JsValue el3, JsPath path4, JsValue el4, JsPath path5, JsValue el5)
-
of
public static JsObj of(String key1, JsValue el1, String key2, JsValue el2, String key3, JsValue el3, String key4, JsValue el4, String key5, JsValue el5, String key6, JsValue el6)
-
of
public static JsObj of(JsPath path1, JsValue el1, JsPath path2, JsValue el2, JsPath path3, JsValue el3, JsPath path4, JsValue el4, JsPath path5, JsValue el5, JsPath path6, JsValue el6)
-
of
public static JsObj of(String key1, JsValue el1, String key2, JsValue el2, String key3, JsValue el3, String key4, JsValue el4, String key5, JsValue el5, String key6, JsValue el6, String key7, JsValue el7)
-
of
public static JsObj of(JsPath path1, JsValue el1, JsPath path2, JsValue el2, JsPath path3, JsValue el3, JsPath path4, JsValue el4, JsPath path5, JsValue el5, JsPath path6, JsValue el6, JsPath path7, JsValue el7)
-
of
public static JsObj of(String key1, JsValue el1, String key2, JsValue el2, String key3, JsValue el3, String key4, JsValue el4, String key5, JsValue el5, String key6, JsValue el6, String key7, JsValue el7, String key8, JsValue el8)
-
of
public static JsObj of(JsPath path1, JsValue el1, JsPath path2, JsValue el2, JsPath path3, JsValue el3, JsPath path4, JsValue el4, JsPath path5, JsValue el5, JsPath path6, JsValue el6, JsPath path7, JsValue el7, JsPath path8, JsValue el8)
-
of
public static JsObj of(String key1, JsValue el1, String key2, JsValue el2, String key3, JsValue el3, String key4, JsValue el4, String key5, JsValue el5, String key6, JsValue el6, String key7, JsValue el7, String key8, JsValue el8, String key9, JsValue el9)
-
of
public static JsObj of(JsPath path1, JsValue el1, JsPath path2, JsValue el2, JsPath path3, JsValue el3, JsPath path4, JsValue el4, JsPath path5, JsValue el5, JsPath path6, JsValue el6, JsPath path7, JsValue el7, JsPath path8, JsValue el8, JsPath path9, JsValue el9)
-
of
public static JsObj of(String key1, JsValue el1, String key2, JsValue el2, String key3, JsValue el3, String key4, JsValue el4, String key5, JsValue el5, String key6, JsValue el6, String key7, JsValue el7, String key8, JsValue el8, String key9, JsValue el9, String key10, JsValue el10)
-
of
public static JsObj of(JsPath path1, JsValue el1, JsPath path2, JsValue el2, JsPath path3, JsValue el3, JsPath path4, JsValue el4, JsPath path5, JsValue el5, JsPath path6, JsValue el6, JsPath path7, JsValue el7, JsPath path8, JsValue el8, JsPath path9, JsValue el9, JsPath path10, JsValue el10)
-
of
public static JsObj of(String key1, JsValue el1, String key2, JsValue el2, String key3, JsValue el3, String key4, JsValue el4, String key5, JsValue el5, String key6, JsValue el6, String key7, JsValue el7, String key8, JsValue el8, String key9, JsValue el9, String key10, JsValue el10, String key11, JsValue el11)
-
of
public static JsObj of(JsPath path1, JsValue el1, JsPath path2, JsValue el2, JsPath path3, JsValue el3, JsPath path4, JsValue el4, JsPath path5, JsValue el5, JsPath path6, JsValue el6, JsPath path7, JsValue el7, JsPath path8, JsValue el8, JsPath path9, JsValue el9, JsPath path10, JsValue el10, JsPath path11, JsValue el11)
-
of
public static JsObj of(String key1, JsValue el1, String key2, JsValue el2, String key3, JsValue el3, String key4, JsValue el4, String key5, JsValue el5, String key6, JsValue el6, String key7, JsValue el7, String key8, JsValue el8, String key9, JsValue el9, String key10, JsValue el10, String key11, JsValue el11, String key12, JsValue el12)
-
of
public static JsObj of(JsPath path1, JsValue el1, JsPath path2, JsValue el2, JsPath path3, JsValue el3, JsPath path4, JsValue el4, JsPath path5, JsValue el5, JsPath path6, JsValue el6, JsPath path7, JsValue el7, JsPath path8, JsValue el8, JsPath path9, JsValue el9, JsPath path10, JsValue el10, JsPath path11, JsValue el11, JsPath path12, JsValue el12)
-
of
public static JsObj of(String key1, JsValue el1, String key2, JsValue el2, String key3, JsValue el3, String key4, JsValue el4, String key5, JsValue el5, String key6, JsValue el6, String key7, JsValue el7, String key8, JsValue el8, String key9, JsValue el9, String key10, JsValue el10, String key11, JsValue el11, String key12, JsValue el12, String key13, JsValue el13)
-
of
public static JsObj of(JsPath path1, JsValue el1, JsPath path2, JsValue el2, JsPath path3, JsValue el3, JsPath path4, JsValue el4, JsPath path5, JsValue el5, JsPath path6, JsValue el6, JsPath path7, JsValue el7, JsPath path8, JsValue el8, JsPath path9, JsValue el9, JsPath path10, JsValue el10, JsPath path11, JsValue el11, JsPath path12, JsValue el12, JsPath path13, JsValue el13)
-
of
public static JsObj of(String key1, JsValue el1, String key2, JsValue el2, String key3, JsValue el3, String key4, JsValue el4, String key5, JsValue el5, String key6, JsValue el6, String key7, JsValue el7, String key8, JsValue el8, String key9, JsValue el9, String key10, JsValue el10, String key11, JsValue el11, String key12, JsValue el12, String key13, JsValue el13, String key14, JsValue el14)
-
of
public static JsObj of(JsPath path1, JsValue el1, JsPath path2, JsValue el2, JsPath path3, JsValue el3, JsPath path4, JsValue el4, JsPath path5, JsValue el5, JsPath path6, JsValue el6, JsPath path7, JsValue el7, JsPath path8, JsValue el8, JsPath path9, JsValue el9, JsPath path10, JsValue el10, JsPath path11, JsValue el11, JsPath path12, JsValue el12, JsPath path13, JsValue el13, JsPath path14, JsValue el14)
-
of
public static JsObj of(String key1, JsValue el1, String key2, JsValue el2, String key3, JsValue el3, String key4, JsValue el4, String key5, JsValue el5, String key6, JsValue el6, String key7, JsValue el7, String key8, JsValue el8, String key9, JsValue el9, String key10, JsValue el10, String key11, JsValue el11, String key12, JsValue el12, String key13, JsValue el13, String key14, JsValue el14, String key15, JsValue el15)
-
of
public static JsObj of(JsPath path1, JsValue el1, JsPath path2, JsValue el2, JsPath path3, JsValue el3, JsPath path4, JsValue el4, JsPath path5, JsValue el5, JsPath path6, JsValue el6, JsPath path7, JsValue el7, JsPath path8, JsValue el8, JsPath path9, JsValue el9, JsPath path10, JsValue el10, JsPath path11, JsValue el11, JsPath path12, JsValue el12, JsPath path13, JsValue el13, JsPath path14, JsValue el14, JsPath path15, JsValue el15)
-
of
public static JsObj of(String key1, JsValue el1, String key2, JsValue el2, String key3, JsValue el3, String key4, JsValue el4, String key5, JsValue el5, String key6, JsValue el6, String key7, JsValue el7, String key8, JsValue el8, String key9, JsValue el9, String key10, JsValue el10, String key11, JsValue el11, String key12, JsValue el12, String key13, JsValue el13, String key14, JsValue el14, String key15, JsValue el15, String key16, JsValue el16)
-
of
public static JsObj of(JsPath path1, JsValue el1, JsPath path2, JsValue el2, JsPath path3, JsValue el3, JsPath path4, JsValue el4, JsPath path5, JsValue el5, JsPath path6, JsValue el6, JsPath path7, JsValue el7, JsPath path8, JsValue el8, JsPath path9, JsValue el9, JsPath path10, JsValue el10, JsPath path11, JsValue el11, JsPath path12, JsValue el12, JsPath path13, JsValue el13, JsPath path14, JsValue el14, JsPath path15, JsValue el15, JsPath path16, JsValue el16)
-
of
public static JsObj of(String key1, JsValue el1, String key2, JsValue el2, String key3, JsValue el3, String key4, JsValue el4, String key5, JsValue el5, String key6, JsValue el6, String key7, JsValue el7, String key8, JsValue el8, String key9, JsValue el9, String key10, JsValue el10, String key11, JsValue el11, String key12, JsValue el12, String key13, JsValue el13, String key14, JsValue el14, String key15, JsValue el15, String key16, JsValue el16, String key17, JsValue el17)
-
of
public static JsObj of(JsPath path1, JsValue el1, JsPath path2, JsValue el2, JsPath path3, JsValue el3, JsPath path4, JsValue el4, JsPath path5, JsValue el5, JsPath path6, JsValue el6, JsPath path7, JsValue el7, JsPath path8, JsValue el8, JsPath path9, JsValue el9, JsPath path10, JsValue el10, JsPath path11, JsValue el11, JsPath path12, JsValue el12, JsPath path13, JsValue el13, JsPath path14, JsValue el14, JsPath path15, JsValue el15, JsPath path16, JsValue el16, JsPath path17, JsValue el17)
-
of
public static JsObj of(String key1, JsValue el1, String key2, JsValue el2, String key3, JsValue el3, String key4, JsValue el4, String key5, JsValue el5, String key6, JsValue el6, String key7, JsValue el7, String key8, JsValue el8, String key9, JsValue el9, String key10, JsValue el10, String key11, JsValue el11, String key12, JsValue el12, String key13, JsValue el13, String key14, JsValue el14, String key15, JsValue el15, String key16, JsValue el16, String key17, JsValue el17, String key18, JsValue el18)
-
of
public static JsObj of(JsPath path1, JsValue el1, JsPath path2, JsValue el2, JsPath path3, JsValue el3, JsPath path4, JsValue el4, JsPath path5, JsValue el5, JsPath path6, JsValue el6, JsPath path7, JsValue el7, JsPath path8, JsValue el8, JsPath path9, JsValue el9, JsPath path10, JsValue el10, JsPath path11, JsValue el11, JsPath path12, JsValue el12, JsPath path13, JsValue el13, JsPath path14, JsValue el14, JsPath path15, JsValue el15, JsPath path16, JsValue el16, JsPath path17, JsValue el17, JsPath path18, JsValue el18)
-
of
public static JsObj of(String key1, JsValue el1, String key2, JsValue el2, String key3, JsValue el3, String key4, JsValue el4, String key5, JsValue el5, String key6, JsValue el6, String key7, JsValue el7, String key8, JsValue el8, String key9, JsValue el9, String key10, JsValue el10, String key11, JsValue el11, String key12, JsValue el12, String key13, JsValue el13, String key14, JsValue el14, String key15, JsValue el15, String key16, JsValue el16, String key17, JsValue el17, String key18, JsValue el18, String key19, JsValue el19)
-
of
public static JsObj of(JsPath path1, JsValue el1, JsPath path2, JsValue el2, JsPath path3, JsValue el3, JsPath path4, JsValue el4, JsPath path5, JsValue el5, JsPath path6, JsValue el6, JsPath path7, JsValue el7, JsPath path8, JsValue el8, JsPath path9, JsValue el9, JsPath path10, JsValue el10, JsPath path11, JsValue el11, JsPath path12, JsValue el12, JsPath path13, JsValue el13, JsPath path14, JsValue el14, JsPath path15, JsValue el15, JsPath path16, JsValue el16, JsPath path17, JsValue el17, JsPath path18, JsValue el18, JsPath path19, JsValue el19)
-
of
public static JsObj of(String key1, JsValue el1, String key2, JsValue el2, String key3, JsValue el3, String key4, JsValue el4, String key5, JsValue el5, String key6, JsValue el6, String key7, JsValue el7, String key8, JsValue el8, String key9, JsValue el9, String key10, JsValue el10, String key11, JsValue el11, String key12, JsValue el12, String key13, JsValue el13, String key14, JsValue el14, String key15, JsValue el15, String key16, JsValue el16, String key17, JsValue el17, String key18, JsValue el18, String key19, JsValue el19, String key20, JsValue el20)
-
of
public static JsObj of(JsPath path1, JsValue el1, JsPath path2, JsValue el2, JsPath path3, JsValue el3, JsPath path4, JsValue el4, JsPath path5, JsValue el5, JsPath path6, JsValue el6, JsPath path7, JsValue el7, JsPath path8, JsValue el8, JsPath path9, JsValue el9, JsPath path10, JsValue el10, JsPath path11, JsValue el11, JsPath path12, JsValue el12, JsPath path13, JsValue el13, JsPath path14, JsValue el14, JsPath path15, JsValue el15, JsPath path16, JsValue el16, JsPath path17, JsValue el17, JsPath path18, JsValue el18, JsPath path19, JsValue el19, JsPath path20, JsValue el20)
-
parse
public static JsObj parse(String str)
Tries to parse the string into an immutable object.- Parameters:
str
- the string to be parsed- Returns:
- a JsOb object
- Throws:
MalformedJson
- if the string doesn't represent a json object
-
parseYaml
public static JsObj parseYaml(String str)
Tries to parse a YAML string into an immutable object.- Parameters:
str
- the YAML to be parsed- Returns:
- a JsOb object
- Throws:
MalformedJson
- if the string doesn't represent a json object
-
set
public JsObj set(String key, JsValue value)
Inserts the element at the key in this json, replacing any existing element.- Parameters:
key
- the keyvalue
- the element- Returns:
- a new json object
-
containsValue
public boolean containsValue(JsValue el)
Description copied from interface:Json
Returns true if this json contains the given element in the first level.- Specified by:
containsValue
in interfaceJson<JsObj>
- Parameters:
el
- the give element JsValue whose presence in this JsArray is to be tested- Returns:
- true if this JsArray contains the JsValue
-
keySet
public Set<String> keySet()
Returns a set containing each key fo this object.- Returns:
- a Set containing each key of this JsObj
-
get
public JsValue get(JsPath path)
Description copied from interface:Json
Returns the element located at the given path orJsNothing
if it doesn't exist.
-
filterValues
public JsObj filterValues(Predicate<? super JsPrimitive> filter)
Description copied from interface:Json
Filters the pairs of elements in the first level of this json, removing those that don't ifPredicateElse the predicate.- Specified by:
filterValues
in interfaceJson<JsObj>
- Parameters:
filter
- the predicate which takes as the input every JsPair in the first level of this json- Returns:
- same this instance if all the pairs satisfy the predicate or a new filtered json of the same type T
- See Also:
how to filter the pair of elements of the whole json and not only the first level
-
filterAllValues
public JsObj filterAllValues(BiPredicate<? super JsPath,? super JsPrimitive> filter)
Description copied from interface:Json
Filters all the pairs of elements of this json, removing those that don't ifPredicateElse the predicate.- Specified by:
filterAllValues
in interfaceJson<JsObj>
- Parameters:
filter
- the predicate which takes as the input every JsPair of this json- Returns:
- same this instance if all the pairs satisfy the predicate or a new filtered json of the same type T
-
filterAllValues
public JsObj filterAllValues(Predicate<? super JsPrimitive> filter)
Description copied from interface:Json
Filters all the pairs of elements of this json, removing those that don't ifPredicateElse the predicate.- Specified by:
filterAllValues
in interfaceJson<JsObj>
- Parameters:
filter
- the predicate which takes as the input every JsPair of this json- Returns:
- same this instance if all the pairs satisfy the predicate or a new filtered json of the same type T
-
filterKeys
public JsObj filterKeys(Predicate<? super String> filter)
Description copied from interface:Json
Filters the keys in the first level of this json, removing those that don't ifPredicateElse the predicate.- Specified by:
filterKeys
in interfaceJson<JsObj>
- Parameters:
filter
- the predicate which takes as the input every JsPair in the first level of this json- Returns:
- same this instance if all the keys satisfy the predicate or a new filtered json of the same type T
- See Also:
how to filter the keys of the whole json and not only the first level
-
filterAllKeys
public JsObj filterAllKeys(BiPredicate<? super JsPath,? super JsValue> filter)
Description copied from interface:Json
Filters all the keys of this json, removing those that don't ifPredicateElse the predicate.- Specified by:
filterAllKeys
in interfaceJson<JsObj>
- Parameters:
filter
- the predicate which takes as the input every JsPair of this json- Returns:
- same this instance if all the keys satisfy the predicate or a new filtered json of the same type T
-
filterAllKeys
public JsObj filterAllKeys(Predicate<? super String> filter)
Description copied from interface:Json
Filters all the keys of this json, removing those that don't ifPredicateElse the predicate.- Specified by:
filterAllKeys
in interfaceJson<JsObj>
- Parameters:
filter
- the predicate which takes as the input every JsPair of this json- Returns:
- same this instance if all the keys satisfy the predicate or a new filtered json of the same type T
-
filterObjs
public JsObj filterObjs(Predicate<? super JsObj> filter)
Description copied from interface:Json
Filters the pair of jsons in the first level of this json, removing those that don't ifPredicateElse the predicate.- Specified by:
filterObjs
in interfaceJson<JsObj>
- Parameters:
filter
- the predicate which takes as the input every JsPair in the first level of this json- Returns:
- same this instance if all the pairs satisfy the predicate or a new filtered json of the same type T
-
filterAllObjs
public JsObj filterAllObjs(BiPredicate<? super JsPath,? super JsObj> filter)
Description copied from interface:Json
Filters all the pair of jsons of this json, removing those that don't ifPredicateElse the predicate.- Specified by:
filterAllObjs
in interfaceJson<JsObj>
- Parameters:
filter
- the predicate which takes as the input every JsPair of this json- Returns:
- same this instance if all the pairs satisfy the predicate or a new filtered json of the same type T
-
filterAllObjs
public JsObj filterAllObjs(Predicate<? super JsObj> filter)
Description copied from interface:Json
Filters all the pair of jsons of this json, removing those that don't ifPredicateElse the predicate.- Specified by:
filterAllObjs
in interfaceJson<JsObj>
- Parameters:
filter
- the predicate which takes as the input every JsPair of this json- Returns:
- same this instance if all the pairs satisfy the predicate or a new filtered json of the same type T
-
isEmpty
public boolean isEmpty()
Description copied from interface:Json
return true if there's no element in this json
-
mapValues
public JsObj mapValues(Function<? super JsPrimitive,? extends JsValue> fn)
Description copied from interface:Json
Maps the values in the first level of this json.
-
mapAllValues
public JsObj mapAllValues(BiFunction<? super JsPath,? super JsPrimitive,? extends JsValue> fn)
Description copied from interface:Json
Maps all the values of this json.- Specified by:
mapAllValues
in interfaceJson<JsObj>
- Parameters:
fn
- the mapping function- Returns:
- a new mapped json of the same type T
-
mapAllValues
public JsObj mapAllValues(Function<? super JsPrimitive,? extends JsValue> fn)
Description copied from interface:Json
Maps all the values of this json.- Specified by:
mapAllValues
in interfaceJson<JsObj>
- Parameters:
fn
- the mapping function- Returns:
- a new mapped json of the same type T
-
mapKeys
public JsObj mapKeys(Function<? super String,String> fn)
Description copied from interface:Json
Maps the keys in the first level of this json.
-
mapAllKeys
public JsObj mapAllKeys(BiFunction<? super JsPath,? super JsValue,String> fn)
Description copied from interface:Json
Maps all the keys of this json.- Specified by:
mapAllKeys
in interfaceJson<JsObj>
- Parameters:
fn
- the mapping function- Returns:
- a new mapped json of the same type T
-
mapAllKeys
public JsObj mapAllKeys(Function<? super String,String> fn)
Description copied from interface:Json
Maps all the keys of this json.- Specified by:
mapAllKeys
in interfaceJson<JsObj>
- Parameters:
fn
- the mapping function- Returns:
- a new mapped json of the same type T
-
mapObjs
public JsObj mapObjs(Function<? super JsObj,? extends JsValue> fn)
Description copied from interface:Json
Maps the jsons in the first level of this json.
-
mapAllObjs
public JsObj mapAllObjs(BiFunction<? super JsPath,? super JsObj,? extends JsValue> fn)
Description copied from interface:Json
Maps all the jsons of this json.- Specified by:
mapAllObjs
in interfaceJson<JsObj>
- Parameters:
fn
- the mapping function- Returns:
- a new mapped json of the same type T
-
mapAllObjs
public JsObj mapAllObjs(Function<? super JsObj,? extends JsValue> fn)
Description copied from interface:Json
Maps all the jsons of this json.- Specified by:
mapAllObjs
in interfaceJson<JsObj>
- Parameters:
fn
- the mapping function- Returns:
- a new mapped json of the same type T
-
set
public JsObj set(JsPath path, JsValue value, JsValue padElement)
Description copied from interface:Json
Inserts the element at the path in this json, replacing any existing element and filling with padElement empty indexes in arrays when necessary.The same instance is returned when the head of the path is a key and this is an array or the head of the path is an index and this is an object or the element is
JsNothing
- Specified by:
set
in interfaceJson<JsObj>
- Parameters:
path
- the JsPath object where the element will be inserted atvalue
- the JsValue that will be insertedpadElement
- the JsValue that will be inserted in arrays when padding is necessary- Returns:
- the same instance or a new json of the same type T
-
set
public JsObj set(JsPath path, JsValue element)
Description copied from interface:Json
Inserts the element at the path in this json, replacing any existing element and filling withJsNull
empty indexes in arrays when necessary.The same instance is returned when the head of the path is a key and this is an array or the head of the path is an index and this is an object or the element is
JsNothing
-
reduce
public <R> Optional<R> reduce(BinaryOperator<R> op, Function<? super JsPrimitive,R> map, Predicate<? super JsPrimitive> predicate)
Description copied from interface:Json
Performs a reduction on the values that satisfy the predicate in the first level of this json. The reduction is performed mapping each value with the mapping function and then applying the operator- Specified by:
reduce
in interfaceJson<JsObj>
- Type Parameters:
R
- the type of the operands of the operator- Parameters:
op
- the operator upon two objects of type Rmap
- the mapping function which produces an object of type R from a JsValuepredicate
- the predicate that determines what JsValue will be mapped and reduced- Returns:
- an
Optional
describing the of of the reduction - See Also:
to apply the reduction in all the Json and not only in the first level
-
reduceAll
public <R> Optional<R> reduceAll(BinaryOperator<R> op, BiFunction<? super JsPath,? super JsPrimitive,R> map, BiPredicate<? super JsPath,? super JsPrimitive> predicate)
Description copied from interface:Json
Performs a reduction on the values of this json that satisfy the predicate. The reduction is performed mapping each value with the mapping function and then applying the operator- Specified by:
reduceAll
in interfaceJson<JsObj>
- Type Parameters:
R
- the type of the operands of the operator- Parameters:
op
- the operator upon two objects of type Rmap
- the mapping function which produces an object of type R from a JsValuepredicate
- the predicate that determines what JsValue will be mapped and reduced- Returns:
- an
Optional
describing the result of the reduction
-
reduceAll
public <R> Optional<R> reduceAll(BinaryOperator<R> op, Function<? super JsPrimitive,R> map, Predicate<? super JsPrimitive> predicate)
Description copied from interface:Json
Performs a reduction on the values of this json that satisfy the predicate. The reduction is performed mapping each value with the mapping function and then applying the operator- Specified by:
reduceAll
in interfaceJson<JsObj>
- Type Parameters:
R
- the type of the operands of the operator- Parameters:
op
- the operator upon two objects of type Rmap
- the mapping function which produces an object of type R from a JsValuepredicate
- the predicate that determines what JsValue will be mapped and reduced- Returns:
- an
Optional
describing the result of the reduction
-
delete
public JsObj delete(JsPath path)
Description copied from interface:Json
Removes the element in this json located at the given path, if it exists, returning the same this instance otherwise
-
size
public int size()
Description copied from interface:Json
Returns the number of elements in the first level of this json
-
streamAll
public Stream<fun.tuple.Pair<JsPath,JsValue>> streamAll()
Description copied from interface:Json
Returns a stream over all the pairs of elements in this json object.
-
streamValues
public Stream<JsValue> streamValues()
- Specified by:
streamValues
in interfaceJson<JsObj>
-
stream
public Stream<fun.tuple.Pair<JsPath,JsValue>> stream()
Description copied from interface:Json
Returns a stream over the pairs of elements in the first level of this json object.
-
filterValues
public JsObj filterValues(BiPredicate<? super String,? super JsPrimitive> filter)
-
filterKeys
public JsObj filterKeys(BiPredicate<? super String,? super JsValue> filter)
-
filterObjs
public JsObj filterObjs(BiPredicate<? super String,? super JsObj> filter)
-
mapValues
public JsObj mapValues(BiFunction<? super String,? super JsPrimitive,? extends JsValue> fn)
-
mapKeys
public JsObj mapKeys(BiFunction<? super String,? super JsValue,String> fn)
-
mapObjs
public JsObj mapObjs(BiFunction<? super String,? super JsObj,JsValue> fn)
-
reduce
public <R> Optional<R> reduce(BinaryOperator<R> op, BiFunction<? super String,? super JsPrimitive,R> map, BiPredicate<? super String,? super JsPrimitive> predicate)
Performs a reduction on the values that satisfy the predicate in the first level of this json. The reduction is performed mapping each value with the mapping function and then applying the operator- Type Parameters:
R
- the type of the operands of the operator- Parameters:
op
- the operator upon two objects of type Rmap
- the mapping function which produces an object of type R from a JsValuepredicate
- the predicate that determines what JsValue will be mapped and reduced- Returns:
- an
Optional
describing the of of the reduction - See Also:
to apply the reduction in all the Json and not only in the first level
-
equals
public boolean equals(JsObj that, JsArray.TYPE ARRAY_AS)
return true if this obj is equal to the given as a parameter. In the case of ARRAY_AS=LIST, this method is equivalent to JsObj.equals(Object).- Parameters:
that
- the given arrayARRAY_AS
- enum to specify if arrays are considered as lists or sets or multisets- Returns:
- true if both objs are equals
-
containsKey
public boolean containsKey(String key)
return true if the key is present- Parameters:
key
- the key- Returns:
- true if the specified key exists
-
getArray
public JsArray getArray(String key)
Returns the array located at the given key or null if it doesn't exist or it's not an array.- Parameters:
key
- the key- Returns:
- the JsArray located at the given key or null
-
getArray
public JsArray getArray(String key, Supplier<JsArray> orElse)
Returns the array located at the given key or the default value provided if it doesn't exist or it's not an array.- Parameters:
key
- the keyorElse
- the default value- Returns:
- the JsArray located at the given key or the default value provided
-
getBigDec
public BigDecimal getBigDec(String key)
Returns the number located at the given key as a big decimal or null if it doesn't exist or it's not a decimal number.- Parameters:
key
- the key- Returns:
- the BigDecimal located at the given key or null
-
getBigDec
public BigDecimal getBigDec(String key, Supplier<BigDecimal> orElse)
Returns the number located at the given key as a big decimal or the default value provided if it doesn't exist or it's not a decimal number.- Parameters:
key
- the keyorElse
- the default value- Returns:
- the BigDecimal located at the given key or the default value provided
-
getBinary
public byte[] getBinary(String key)
Returns the bytes located at the given key or null if it doesn't exist or it's not an array of bytes.- Parameters:
key
- the key- Returns:
- the bytes located at the given key or null
-
getBinary
public byte[] getBinary(String key, Supplier<byte[]> orElse)
Returns the bytes located at the given key or the default value provided if it doesn't exist or it's not an array of bytes.- Parameters:
key
- the keyorElse
- the default value- Returns:
- the bytes located at the given key or the default value provided
-
getBigInt
public BigInteger getBigInt(String key)
Returns the big integer located at the given key as a big integer or null if it doesn't exist or it's not an integral number.- Parameters:
key
- the key- Returns:
- the BigInteger located at the given key or null
-
getBigInt
public BigInteger getBigInt(String key, Supplier<BigInteger> orElse)
Returns the big integer located at the given key as a big integer or the default value provided if it doesn't exist or it's not an integral number.- Parameters:
key
- the keyorElse
- the default value- Returns:
- the BigInteger located at the given key or null
-
getInstant
public Instant getInstant(String key)
Returns the instant located at the given key or null if it doesn't exist or it's not an instant.- Parameters:
key
- the key- Returns:
- the instant located at the given key or null
-
getInstant
public Instant getInstant(String key, Supplier<Instant> orElse)
Returns the instant located at the given key or the default value provided if it doesn't exist or it's not an instant.- Parameters:
key
- the keyorElse
- the default value- Returns:
- the instant located at the given key or null
-
getBool
public Boolean getBool(String key)
Returns the boolean located at the given key or null if it doesn't exist.- Parameters:
key
- the key- Returns:
- the Boolean located at the given key or null
-
getBool
public Boolean getBool(String key, Supplier<Boolean> orElse)
Returns the boolean located at the given key or the default value provided if it doesn't exist.- Parameters:
key
- the keyorElse
- the default value- Returns:
- the Boolean located at the given key or null
-
getDouble
public Double getDouble(String key)
Returns the number located at the given key as a double or null if it doesn't exist or it's not a decimal number. If the number is a BigDecimal, the conversion is identical to the specified inBigDecimal.doubleValue()
and in some cases it can lose information about the precision of the BigDecimal- Parameters:
key
- the key- Returns:
- the decimal number located at the given key or null
-
getDouble
public Double getDouble(String key, Supplier<Double> orElse)
Returns the number located at the given key as a double or the default value provided if it doesn't exist or it's not a decimal number. If the number is a BigDecimal, the conversion is identical to the specified inBigDecimal.doubleValue()
and in some cases it can lose information about the precision of the BigDecimal- Parameters:
key
- the keyorElse
- the default value- Returns:
- the decimal number located at the given key or null
-
getInt
public Integer getInt(String key)
Returns the integral number located at the given key as an integer or null if it doesn't exist or it's not an integral number or it's an integral number but doesn't fit in an integer.- Parameters:
key
- the key- Returns:
- the integral number located at the given key or null
-
getInt
public Integer getInt(String key, Supplier<Integer> orElse)
Returns the integral number located at the given key as an integer or the default value provided if it doesn't exist or it's not an integral number or it's an integral number but doesn't fit in an integer.- Parameters:
key
- the keyorElse
- the default value- Returns:
- the integral number located at the given key or null
-
getLong
public Long getLong(String key)
Returns the integral number located at the given key as a long or null if it doesn't exist or it's not an integral number or it's an integral number but doesn't fit in a long.- Parameters:
key
- the key- Returns:
- the integral number located at the given key or null
-
getLong
public Long getLong(String key, Supplier<Long> orElse)
Returns the integral number located at the given key as a long or the default value provided if it doesn't exist or it's not an integral number or it's an integral number but doesn't fit in a long.- Parameters:
key
- the keyorElse
- the default value- Returns:
- the integral number located at the given key or the default value provided
-
getObj
public JsObj getObj(String key)
Returns the json object located at the given key or null if it doesn't exist or it's not an object.- Parameters:
key
- the key- Returns:
- the json object located at the given key or null
-
getObj
public JsObj getObj(String key, Supplier<JsObj> orElse)
Returns the json object located at the given key or the default value provided if it doesn't exist or it's not an object.- Parameters:
key
- the keyorElse
- the default value- Returns:
- the json object located at the given key or the default value
-
getStr
public String getStr(String key)
Returns the string located at the given key or null if it doesn't exist or it's not an string.- Parameters:
key
- the key- Returns:
- the string located at the given key or null
-
getStr
public String getStr(String key, Supplier<String> orElse)
Returns the string located at the given key or the default value provided if it doesn't exist or it's not an string.- Parameters:
key
- the keyorElse
- the default value- Returns:
- the string located at the given key or null
-
hashCode
public int hashCode()
equals method is inherited, so it's implemented. The purpose of this method is to cache the hashcode once calculated. the object is immutable and it won't change Single-check idiom Item 83 from Effective Java
-
toString
public String toString()
// Single-check idiom Item 83 from effective java
-
isObj
public boolean isObj()
Description copied from interface:JsValue
Returns true if this JsValue is a JsObj
-
intersection
public JsObj intersection(JsObj that, JsArray.TYPE ARRAY_AS)
this.intersection(that, SET)
returns an array with the elements that exist in boththis
andthat
this.intersection(that, MULTISET)
returns an array with the elements that exist in boththis
andthat
, being duplicates allowed.this.intersection(that, LIST)
returns an array with the elements that exist in boththis
andthat
, and are located at the same position.- Parameters:
that
- the other objARRAY_AS
- option to define if arrays are considered SETS, LISTS OR MULTISET- Returns:
- a new JsObj of the same type as the inputs (mutable or immutable)
-
intersectionAll
public JsObj intersectionAll(JsObj that, JsArray.TYPE ARRAY_AS)
this.intersectionAll(that)
behaves asthis.intersection(that, LIST)
, but for those elements that are containers of the same type and are located at the same position, the result is their intersection. So this operation is kind of a 'recursive' intersection.- Parameters:
that
- the other objectARRAY_AS
- option to define if arrays are considered SETS, LISTS OR MULTISET- Returns:
- a new JsObj of the same type as the inputs (mutable or immutable)
-
union
public JsObj union(JsObj that)
returnsthis
json object plus those pairs from the given json objectthat
which keys don't exist inthis
. Taking that into account, it's not a commutative operation unless the elements associated with the keys that exist in both json objects are equals.- Parameters:
that
- the given json object- Returns:
- a new JsObj of the same type as the inputs (mutable or immutable)
-
unionAll
public JsObj unionAll(JsObj that, JsArray.TYPE ARRAY_AS)
behaves like theunion(JsObj)
but, for those keys that exit in boththis
andthat
json objects, which associated elements are **containers of the same type**, the result is their union. In this case, we can specify if arrays are considered Sets, Lists, or MultiSets. So this operation is kind of a 'recursive' union.- Parameters:
that
- the given json objectARRAY_AS
- option to define if arrays are considered SETS, LISTS OR MULTISET- Returns:
- a new JsObj of the same type as the inputs (mutable or immutable)
-
-