Package jsonvalues
Class JsArray
- java.lang.Object
-
- jsonvalues.JsArray
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classJsArray.TYPEType of arrays: SET, MULTISET or LIST.
-
Field Summary
Fields Modifier and Type Field Description static JsArrayEMPTYstatic JsOptics.JsArrayLenseslenslenses defined for a Json arraystatic JsOptics.JsArrayOptionalsoptionaloptionals defined for a Json arraystatic Prism<JsValue,JsArray>prismprism between the sum type JsValue and JsArraystatic intTYPE_ID
-
Constructor Summary
Constructors Constructor Description JsArray()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description JsArrayappend(JsValue e, JsValue... others)Adds one or more elements, starting from the first, to the back of this array.JsArrayappendAll(JsArray array)Adds all the elements of the given array, starting from the head, to the back of this array.booleancontainsValue(JsValue el)Returns true if this json contains the given element in the first level.JsArraydelete(int index)JsArraydelete(JsPath path)Removes the element in this json located at the given path, if it exists, returning the same this instance otherwisestatic JsArrayempty()booleanequals(java.lang.Object that)booleanequals(JsArray array, JsArray.TYPE ARRAY_AS)Returns true if this array is equal to the given as a parameter.JsArrayfilterAllKeys(java.util.function.BiPredicate<? super JsPath,? super JsValue> filter)Filters all the keys of this json, removing those that don't ifPredicateElse the predicate.JsArrayfilterAllKeys(java.util.function.Predicate<? super java.lang.String> filter)Filters all the keys of this json, removing those that don't ifPredicateElse the predicate.JsArrayfilterAllObjs(java.util.function.BiPredicate<? super JsPath,? super JsObj> filter)Filters all the pair of jsons of this json, removing those that don't ifPredicateElse the predicate.JsArrayfilterAllObjs(java.util.function.Predicate<? super JsObj> filter)Filters all the pair of jsons of this json, removing those that don't ifPredicateElse the predicate.JsArrayfilterAllValues(java.util.function.BiPredicate<? super JsPath,? super JsPrimitive> filter)Filters all the pairs of elements of this json, removing those that don't ifPredicateElse the predicate.JsArrayfilterAllValues(java.util.function.Predicate<? super JsPrimitive> filter)Filters all the pairs of elements of this json, removing those that don't ifPredicateElse the predicate.JsArrayfilterKeys(java.util.function.BiPredicate<? super java.lang.String,? super JsValue> filter)JsArrayfilterKeys(java.util.function.Predicate<? super java.lang.String> filter)Filters the keys in the first level of this json, removing those that don't ifPredicateElse the predicate.JsArrayfilterObjs(java.util.function.BiPredicate<? super java.lang.Integer,? super JsObj> filter)JsArrayfilterObjs(java.util.function.Predicate<? super JsObj> filter)Filters the pair of jsons in the first level of this json, removing those that don't ifPredicateElse the predicate.JsArrayfilterValues(java.util.function.BiPredicate<? super java.lang.Integer,? super JsPrimitive> filter)JsArrayfilterValues(java.util.function.Predicate<? super JsPrimitive> filter)Filters the pairs of elements in the first level of this json, removing those that don't ifPredicateElse the predicate.JsValueget(int i)returns the element located at the specified index or JsNothing if it doesn't exist.JsValueget(JsPath path)Returns the element located at the given path orJsNothingif it doesn't exist.JsArraygetArray(int index)Returns the array located at the given index or null if it doesn't exist or it's not a json array.java.math.BigDecimalgetBigDec(int index)Returns the number located at the given index as a big decimal or null if it doesn't exist or it's not a decimal number.java.math.BigIntegergetBigInt(int index)Returns the number located at the given index as a big integer or null if it doesn't exist or it's not an integral number.byte[]getBinary(int index)Returns the array of bytes located at the given index or null if it doesn't exist or it's not an array of bytes.java.lang.BooleangetBool(int index)Returns the boolean located at the given index or null if it doesn't exist.java.lang.DoublegetDouble(int index)Returns the number located at the given index as a double or null if it doesn't exist or it's not a decimal number.java.time.InstantgetInstant(int index)Returns the instant located at the given index or null if it doesn't exist or it's not an instant.java.lang.IntegergetInt(int index)Returns the integral number located at the given index 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.java.lang.LonggetLong(int index)Returns the long number located at the given index as an 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 an long.JsObjgetObj(int index)Returns the object located at the given index or null if it doesn't exist or it's not a json object.java.lang.StringgetStr(int index)Returns the string located at the given index or null if it doesn't exist.inthashCode()equals method is inherited, so it's implemented.JsValuehead()Returns the first element of this array.intid()JsArrayinit()Returns all the elements of this array except the last one.JsArrayintersection(JsArray that, JsArray.TYPE ARRAY_AS)this.intersection(that, SET)returns an array with the elements that exist in boththisandthat.JsArrayintersectionAll(JsArray that)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.booleanisArray()booleanisEmpty()return true if there's no element in this jsonjava.util.Iterator<JsValue>iterator()JsValuelast()Returns the last element of this array.JsArraymapAllKeys(java.util.function.BiFunction<? super JsPath,? super JsValue,java.lang.String> fn)Maps all the keys of this json.JsArraymapAllKeys(java.util.function.Function<? super java.lang.String,java.lang.String> fn)Maps all the keys of this json.JsArraymapAllObjs(java.util.function.BiFunction<? super JsPath,? super JsObj,JsValue> fn)Maps all the jsons of this json.JsArraymapAllObjs(java.util.function.Function<? super JsObj,JsValue> fn)Maps all the jsons of this json.JsArraymapAllValues(java.util.function.BiFunction<? super JsPath,? super JsPrimitive,? extends JsValue> fn)Maps all the values of this json.JsArraymapAllValues(java.util.function.Function<? super JsPrimitive,? extends JsValue> fn)Maps all the values of this json.JsArraymapKeys(java.util.function.BiFunction<? super java.lang.String,? super JsValue,java.lang.String> fn)JsArraymapKeys(java.util.function.Function<? super java.lang.String,java.lang.String> fn)Maps the keys in the first level of this json.JsArraymapObjs(java.util.function.BiFunction<? super java.lang.Integer,? super JsObj,JsValue> fn)JsArraymapObjs(java.util.function.Function<? super JsObj,JsValue> fn)Maps the jsons in the first level of this json.JsArraymapValues(java.util.function.BiFunction<? super java.lang.Integer,? super JsPrimitive,? extends JsValue> fn)JsArraymapValues(java.util.function.Function<? super JsPrimitive,? extends JsValue> fn)Maps the values in the first level of this json.static JsArrayof(boolean bool, boolean... others)Returns an immutable array from one or more booleans.static JsArrayof(double number, double... others)Returns an immutable array from one or more doubles.static JsArrayof(int number, int... others)Returns an immutable array from one or more integers.static JsArrayof(long number, long... others)Returns an immutable array from one or more longs.static JsArrayof(java.lang.String str, java.lang.String... others)Returns an immutable array from one or more strings.static JsArrayof(java.math.BigInteger number, java.math.BigInteger... others)Returns an immutable array from one or more big integers.static JsArrayof(JsPair pair, JsPair... others)Returns an immutable array from one or more pairs.static JsArrayof(JsValue e)static JsArrayof(JsValue e, JsValue e1)Returns an immutable two-element array.static JsArrayof(JsValue e, JsValue e1, JsValue e2)Returns an immutable three-element array.static JsArrayof(JsValue e, JsValue e1, JsValue e2, JsValue e3)Returns an immutable four-element array.static JsArrayof(JsValue e, JsValue e1, JsValue e2, JsValue e3, JsValue e4)Returns an immutable five-element array.static JsArrayof(JsValue e, JsValue e1, JsValue e2, JsValue e3, JsValue e4, JsValue... rest)Returns an immutable array.static JsArrayofIterable(java.lang.Iterable<? extends JsValue> iterable)returns an immutable json array from an iterable of json elementsstatic JsArrayparse(java.lang.String str)Tries to parse the string into an immutable json array.JsArrayprepend(JsValue e, JsValue... others)Adds one or more elements, starting from the last, to the front of this array.JsArrayprependAll(JsArray array)Adds all the elements of the array, starting from the last, to the front of this array.<R> java.util.Optional<R>reduce(java.util.function.BinaryOperator<R> op, java.util.function.BiFunction<? super java.lang.Integer,? super JsPrimitive,R> map, java.util.function.BiPredicate<? super java.lang.Integer,? super JsPrimitive> predicate)<R> java.util.Optional<R>reduce(java.util.function.BinaryOperator<R> op, java.util.function.Function<? super JsPrimitive,R> map, java.util.function.Predicate<? super JsPrimitive> predicate)Performs a reduction on the values that satisfy the predicate in the first level of this json.<R> java.util.Optional<R>reduceAll(java.util.function.BinaryOperator<R> op, java.util.function.BiFunction<? super JsPath,? super JsPrimitive,R> map, java.util.function.BiPredicate<? super JsPath,? super JsPrimitive> predicate)Performs a reduction on the values of this json that satisfy the predicate.<R> java.util.Optional<R>reduceAll(java.util.function.BinaryOperator<R> op, java.util.function.Function<? super JsPrimitive,R> map, java.util.function.Predicate<? super JsPrimitive> predicate)Performs a reduction on the values of this json that satisfy the predicate.JsArrayset(int index, JsValue element)JsArrayset(int index, JsValue value, JsValue padElement)JsArrayset(JsPath path, JsValue element)Inserts the element at the path in this json, replacing any existing element and filling withJsNullempty indexes in arrays when necessary.JsArrayset(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.intsize()Returns the number of elements in the first level of this jsonjava.util.stream.Stream<JsPair>stream()Returns a stream over the pairs of elements in the first level of this json object.java.util.stream.Stream<JsPair>streamAll()Returns a stream over all the pairs of elements in this json object.JsArraytail()Returns a json array consisting of all elements of this array except the first one.java.lang.StringtoString()// Single-check idiom Item 83 from effective javaJsArrayunion(JsArray that, JsArray.TYPE ARRAY_AS)this.union(that, SET)returnsthisplus those elements fromthatthat don't exist inthis.JsArrayunionAll(JsArray that)returnsthisplus those elements fromthatwhich position is>= this.size(), and, at the positions where a container of the same type exists in boththisandthat, the result is their union.-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface jsonvalues.Json
containsPath, equals, getArray, getBigDec, getBigInt, getBinary, getBool, getDouble, getInstant, getInt, getLong, getObj, getStr, ifEmptyElse, isNotEmpty, map, serialize, serialize, sizeAll, times, timesAll, toJsPrimitive, toPrettyString
-
Methods inherited from interface jsonvalues.JsValue
ifNothing, ifNull, 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, isObj, isPrimitive, isSameType, isStr, isStr, isTrue, toJsArray, toJsBigDec, toJsBigInt, toJsBinary, toJsBool, toJsDouble, toJsInstant, toJsInt, toJsLong, toJsNumber, toJsObj, toJson, toJsStr
-
-
-
-
Field Detail
-
TYPE_ID
public static final int TYPE_ID
- See Also:
- Constant Field Values
-
lens
public static final JsOptics.JsArrayLenses lens
lenses defined for a Json array
-
optional
public static final JsOptics.JsArrayOptionals optional
optionals defined for a Json array
-
EMPTY
public static final JsArray EMPTY
-
-
Method Detail
-
empty
public static JsArray empty()
-
of
public static JsArray of(JsPair pair, JsPair... others)
Returns an immutable array from one or more pairs.- Parameters:
pair- a pairothers- more optional pairs- Returns:
- an immutable JsArray
- Throws:
UserError- if an elem of a pair is mutable
-
of
public static JsArray of(JsValue e, JsValue e1, JsValue e2, JsValue e3, JsValue e4, JsValue... rest)
Returns an immutable array.- Parameters:
e- a JsValuee1- a JsValuee2- a JsValuee3- a JsValuee4- a JsValuerest- more optional JsValue- Returns:
- an immutable JsArray
- Throws:
UserError- if an elem is a mutable Json
-
of
public static JsArray of(JsValue e, JsValue e1, JsValue e2, JsValue e3, JsValue e4)
Returns an immutable five-element array.- Parameters:
e- a JsValuee1- a JsValuee2- a JsValuee3- a JsValuee4- a JsValue- Returns:
- an immutable five-element JsArray
- Throws:
UserError- if an elem is a mutable Json
-
append
public final JsArray append(JsValue e, JsValue... others)
Adds one or more elements, starting from the first, to the back of this array.- Parameters:
e- the JsValue to be added to the back.others- more optional JsValue to be added to the back- Returns:
- a new JsArray
-
of
public static JsArray of(JsValue e, JsValue e1, JsValue e2, JsValue e3)
Returns an immutable four-element array.- Parameters:
e- a JsValuee1- a JsValuee2- a JsValuee3- a JsValue- Returns:
- an immutable four-element JsArray
- Throws:
UserError- if an elem is a mutable Json
-
of
public static JsArray of(JsValue e, JsValue e1, JsValue e2)
Returns an immutable three-element array.- Parameters:
e- a JsValuee1- a JsValuee2- a JsValue- Returns:
- an immutable three-element JsArray
- Throws:
UserError- if an elem is a mutable Json
-
of
public static JsArray of(JsValue e, JsValue e1)
Returns an immutable two-element array.- Parameters:
e- a JsValuee1- a JsValue- Returns:
- an immutable two-element JsArray
- Throws:
UserError- if an elem is a mutable Json
-
of
public static JsArray of(java.lang.String str, java.lang.String... others)
Returns an immutable array from one or more strings.- Parameters:
str- a stringothers- more optional strings- Returns:
- an immutable JsArray
-
of
public static JsArray of(int number, int... others)
Returns an immutable array from one or more integers.- Parameters:
number- an integerothers- more optional integers- Returns:
- an immutable JsArray
-
of
public static JsArray of(boolean bool, boolean... others)
Returns an immutable array from one or more booleans.- Parameters:
bool- an booleanothers- more optional booleans- Returns:
- an immutable JsArray
-
of
public static JsArray of(long number, long... others)
Returns an immutable array from one or more longs.- Parameters:
number- a longothers- more optional longs- Returns:
- an immutable JsArray
-
of
public static JsArray of(java.math.BigInteger number, java.math.BigInteger... others)
Returns an immutable array from one or more big integers.- Parameters:
number- a big integerothers- more optional big integers- Returns:
- an immutable JsArray
-
of
public static JsArray of(double number, double... others)
Returns an immutable array from one or more doubles.- Parameters:
number- a doubleothers- more optional doubles- Returns:
- an immutable JsArray
-
ofIterable
public static JsArray ofIterable(java.lang.Iterable<? extends JsValue> iterable)
returns an immutable json array from an iterable of json elements- Parameters:
iterable- the iterable of json elements- Returns:
- an immutable json array
-
parse
public static JsArray parse(java.lang.String str)
Tries to parse the string into an immutable json array.- Parameters:
str- the string to be parsed- Returns:
- a JsArray
- Throws:
MalformedJson- if the string doesnt represent a json array
-
appendAll
public final JsArray appendAll(JsArray array)
Adds all the elements of the given array, starting from the head, to the back of this array.- Parameters:
array- the JsArray of elements to be added to the back- Returns:
- a new JsArray
-
equals
public boolean equals(JsArray array, JsArray.TYPE ARRAY_AS)
Returns true if this array is equal to the given as a parameter. In the case of ARRAY_AS=LIST, this method is equivalent to JsArray.equals(Object).- Parameters:
array- the given arrayARRAY_AS- option to define if arrays are considered SETS, LISTS OR MULTISET- Returns:
- true if both arrays are equals according to ARRAY_AS parameter
-
getInt
public java.lang.Integer getInt(int index)
Returns the integral number located at the given index 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:
index- the index- Returns:
- the integral number located at the given index or null
-
getLong
public java.lang.Long getLong(int index)
Returns the long number located at the given index as an 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 an long.- Parameters:
index- the index- Returns:
- the long number located at the given index or null
-
getStr
public java.lang.String getStr(int index)
Returns the string located at the given index or null if it doesn't exist.- Parameters:
index- the index- Returns:
- the string located at the given index or null
-
getInstant
public java.time.Instant getInstant(int index)
Returns the instant located at the given index or null if it doesn't exist or it's not an instant. If the element is an instant formatted as a string, it's returned as an instant as well.- Parameters:
index- the given index- Returns:
- an instant
-
getBinary
public byte[] getBinary(int index)
Returns the array of bytes located at the given index or null if it doesn't exist or it's not an array of bytes. If the element is a string in base64, it's returned as an array of bytes as well.- Parameters:
index- the given index- Returns:
- an array of bytes
-
getBool
public java.lang.Boolean getBool(int index)
Returns the boolean located at the given index or null if it doesn't exist.- Parameters:
index- the index- Returns:
- the boolean located at the given index or null
-
getDouble
public java.lang.Double getDouble(int index)
Returns the number located at the given index 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:
index- the index- Returns:
- the double number located at the given index or null
-
getBigDec
public java.math.BigDecimal getBigDec(int index)
Returns the number located at the given index as a big decimal or null if it doesn't exist or it's not a decimal number.- Parameters:
index- the index- Returns:
- the decimal number located at the given index or null
-
getBigInt
public java.math.BigInteger getBigInt(int index)
Returns the number located at the given index as a big integer or null if it doesn't exist or it's not an integral number.- Parameters:
index- the index- Returns:
- the integral number located at the given index or null
-
getObj
public JsObj getObj(int index)
Returns the object located at the given index or null if it doesn't exist or it's not a json object.- Parameters:
index- the index- Returns:
- the object located at the given index or null
-
getArray
public JsArray getArray(int index)
Returns the array located at the given index or null if it doesn't exist or it's not a json array.- Parameters:
index- the index- Returns:
- the array located at the given index or null
-
containsValue
public final boolean containsValue(JsValue el)
Description copied from interface:JsonReturns true if this json contains the given element in the first level.- Specified by:
containsValuein interfaceJson<JsArray>- Parameters:
el- the give element JsValue whose presence in this JsArray is to be tested- Returns:
- true if this JsArray contains the JsValue
-
get
public JsValue get(JsPath path)
Description copied from interface:JsonReturns the element located at the given path orJsNothingif it doesn't exist.
-
filterValues
public final JsArray filterValues(java.util.function.BiPredicate<? super java.lang.Integer,? super JsPrimitive> filter)
-
filterValues
public JsArray filterValues(java.util.function.Predicate<? super JsPrimitive> filter)
Description copied from interface:JsonFilters the pairs of elements in the first level of this json, removing those that don't ifPredicateElse the predicate.- Specified by:
filterValuesin interfaceJson<JsArray>- 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 final JsArray filterAllValues(java.util.function.BiPredicate<? super JsPath,? super JsPrimitive> filter)
Description copied from interface:JsonFilters all the pairs of elements of this json, removing those that don't ifPredicateElse the predicate.- Specified by:
filterAllValuesin interfaceJson<JsArray>- 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 JsArray filterAllValues(java.util.function.Predicate<? super JsPrimitive> filter)
Description copied from interface:JsonFilters all the pairs of elements of this json, removing those that don't ifPredicateElse the predicate.- Specified by:
filterAllValuesin interfaceJson<JsArray>- 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 final JsArray filterKeys(java.util.function.BiPredicate<? super java.lang.String,? super JsValue> filter)
-
filterKeys
public JsArray filterKeys(java.util.function.Predicate<? super java.lang.String> filter)
Description copied from interface:JsonFilters the keys in the first level of this json, removing those that don't ifPredicateElse the predicate.- Specified by:
filterKeysin interfaceJson<JsArray>- 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 final JsArray filterAllKeys(java.util.function.BiPredicate<? super JsPath,? super JsValue> filter)
Description copied from interface:JsonFilters all the keys of this json, removing those that don't ifPredicateElse the predicate.- Specified by:
filterAllKeysin interfaceJson<JsArray>- 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 JsArray filterAllKeys(java.util.function.Predicate<? super java.lang.String> filter)
Description copied from interface:JsonFilters all the keys of this json, removing those that don't ifPredicateElse the predicate.- Specified by:
filterAllKeysin interfaceJson<JsArray>- 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 final JsArray filterObjs(java.util.function.BiPredicate<? super java.lang.Integer,? super JsObj> filter)
-
filterObjs
public JsArray filterObjs(java.util.function.Predicate<? super JsObj> filter)
Description copied from interface:JsonFilters the pair of jsons in the first level of this json, removing those that don't ifPredicateElse the predicate.- Specified by:
filterObjsin interfaceJson<JsArray>- 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 final JsArray filterAllObjs(java.util.function.BiPredicate<? super JsPath,? super JsObj> filter)
Description copied from interface:JsonFilters all the pair of jsons of this json, removing those that don't ifPredicateElse the predicate.- Specified by:
filterAllObjsin interfaceJson<JsArray>- 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 JsArray filterAllObjs(java.util.function.Predicate<? super JsObj> filter)
Description copied from interface:JsonFilters all the pair of jsons of this json, removing those that don't ifPredicateElse the predicate.- Specified by:
filterAllObjsin interfaceJson<JsArray>- 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 final boolean isEmpty()
Description copied from interface:Jsonreturn true if there's no element in this json
-
mapValues
public final JsArray mapValues(java.util.function.BiFunction<? super java.lang.Integer,? super JsPrimitive,? extends JsValue> fn)
-
mapValues
public JsArray mapValues(java.util.function.Function<? super JsPrimitive,? extends JsValue> fn)
Description copied from interface:JsonMaps the values in the first level of this json.
-
mapAllValues
public JsArray mapAllValues(java.util.function.BiFunction<? super JsPath,? super JsPrimitive,? extends JsValue> fn)
Description copied from interface:JsonMaps all the values of this json.- Specified by:
mapAllValuesin interfaceJson<JsArray>- Parameters:
fn- the mapping function- Returns:
- a new mapped json of the same type T
-
mapAllValues
public JsArray mapAllValues(java.util.function.Function<? super JsPrimitive,? extends JsValue> fn)
Description copied from interface:JsonMaps all the values of this json.- Specified by:
mapAllValuesin interfaceJson<JsArray>- Parameters:
fn- the mapping function- Returns:
- a new mapped json of the same type T
-
mapKeys
public final JsArray mapKeys(java.util.function.BiFunction<? super java.lang.String,? super JsValue,java.lang.String> fn)
-
mapKeys
public JsArray mapKeys(java.util.function.Function<? super java.lang.String,java.lang.String> fn)
Description copied from interface:JsonMaps the keys in the first level of this json.
-
mapAllKeys
public final JsArray mapAllKeys(java.util.function.BiFunction<? super JsPath,? super JsValue,java.lang.String> fn)
Description copied from interface:JsonMaps all the keys of this json.- Specified by:
mapAllKeysin interfaceJson<JsArray>- Parameters:
fn- the mapping function- Returns:
- a new mapped json of the same type T
-
mapAllKeys
public JsArray mapAllKeys(java.util.function.Function<? super java.lang.String,java.lang.String> fn)
Description copied from interface:JsonMaps all the keys of this json.- Specified by:
mapAllKeysin interfaceJson<JsArray>- Parameters:
fn- the mapping function- Returns:
- a new mapped json of the same type T
-
mapObjs
public final JsArray mapObjs(java.util.function.BiFunction<? super java.lang.Integer,? super JsObj,JsValue> fn)
-
mapObjs
public JsArray mapObjs(java.util.function.Function<? super JsObj,JsValue> fn)
Description copied from interface:JsonMaps the jsons in the first level of this json.
-
mapAllObjs
public final JsArray mapAllObjs(java.util.function.BiFunction<? super JsPath,? super JsObj,JsValue> fn)
Description copied from interface:JsonMaps all the jsons of this json.- Specified by:
mapAllObjsin interfaceJson<JsArray>- Parameters:
fn- the mapping function- Returns:
- a new mapped json of the same type T
-
mapAllObjs
public JsArray mapAllObjs(java.util.function.Function<? super JsObj,JsValue> fn)
Description copied from interface:JsonMaps all the jsons of this json.- Specified by:
mapAllObjsin interfaceJson<JsArray>- Parameters:
fn- the mapping function- Returns:
- a new mapped json of the same type T
-
set
public JsArray set(JsPath path, JsValue element)
Description copied from interface:JsonInserts the element at the path in this json, replacing any existing element and filling withJsNullempty 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
-
set
public final JsArray set(JsPath path, JsValue value, JsValue padElement)
Description copied from interface:JsonInserts 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:
setin interfaceJson<JsArray>- 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
-
reduce
public final <R> java.util.Optional<R> reduce(java.util.function.BinaryOperator<R> op, java.util.function.BiFunction<? super java.lang.Integer,? super JsPrimitive,R> map, java.util.function.BiPredicate<? super java.lang.Integer,? super JsPrimitive> predicate)
-
reduce
public <R> java.util.Optional<R> reduce(java.util.function.BinaryOperator<R> op, java.util.function.Function<? super JsPrimitive,R> map, java.util.function.Predicate<? super JsPrimitive> predicate)Description copied from interface:JsonPerforms 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:
reducein interfaceJson<JsArray>- 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
Optionaldescribing the of of the reduction - See Also:
to apply the reduction in all the Json and not only in the first level
-
reduceAll
public final <R> java.util.Optional<R> reduceAll(java.util.function.BinaryOperator<R> op, java.util.function.BiFunction<? super JsPath,? super JsPrimitive,R> map, java.util.function.BiPredicate<? super JsPath,? super JsPrimitive> predicate)Description copied from interface:JsonPerforms 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:
reduceAllin interfaceJson<JsArray>- 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
Optionaldescribing the result of the reduction
-
reduceAll
public <R> java.util.Optional<R> reduceAll(java.util.function.BinaryOperator<R> op, java.util.function.Function<? super JsPrimitive,R> map, java.util.function.Predicate<? super JsPrimitive> predicate)Description copied from interface:JsonPerforms 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:
reduceAllin interfaceJson<JsArray>- 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
Optionaldescribing the result of the reduction
-
delete
public final JsArray delete(JsPath path)
Description copied from interface:JsonRemoves the element in this json located at the given path, if it exists, returning the same this instance otherwise
-
size
public final int size()
Description copied from interface:JsonReturns the number of elements in the first level of this json
-
streamAll
public java.util.stream.Stream<JsPair> streamAll()
Description copied from interface:JsonReturns a stream over all the pairs of elements in this json object.
-
stream
public java.util.stream.Stream<JsPair> stream()
Description copied from interface:JsonReturns a stream over the pairs of elements in the first level of this json object.
-
get
public JsValue get(int i)
returns the element located at the specified index or JsNothing if it doesn't exist. It never throws an exception, it's a total function.- Parameters:
i- the index- Returns:
- a JsValue
-
hashCode
public final 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- Overrides:
hashCodein classjava.lang.Object
-
equals
public final boolean equals(java.lang.Object that)
- Overrides:
equalsin classjava.lang.Object
-
toString
public final java.lang.String toString()
// Single-check idiom Item 83 from effective java- Overrides:
toStringin classjava.lang.Object
-
head
public final JsValue head()
Returns the first element of this array.- Returns:
- the first JsValue of this JsArray
- Throws:
UserError- if this JsArray is empty
-
tail
public final JsArray tail()
Returns a json array consisting of all elements of this array except the first one.- Returns:
- a JsArray consisting of all the elements of this JsArray except the head
- Throws:
UserError- if this JsArray is empty.
-
init
public final JsArray init()
Returns all the elements of this array except the last one.- Returns:
- JsArray with all the JsValue except the last one
- Throws:
UserError- if this JsArray is empty
-
intersection
public final JsArray intersection(JsArray that, JsArray.TYPE ARRAY_AS)
this.intersection(that, SET)returns an array with the elements that exist in boththisandthat.this.intersection(that, MULTISET)returns an array with the elements that exist in boththisandthat, being duplicates allowed.this.intersection(that, LIST)returns an array with the elements that exist in boththisandthatand are located at the same position.- Parameters:
that- the other arrayARRAY_AS- option to define if arrays are considered SETS, LISTS OR MULTISET- Returns:
- a new JsArray of the same type as the inputs (mutable or immutable)
-
intersectionAll
public JsArray intersectionAll(JsArray that)
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 array- Returns:
- a JsArray of the same type as the inputs (mutable or immutable)
-
isArray
public boolean isArray()
-
iterator
public final java.util.Iterator<JsValue> iterator()
- Specified by:
iteratorin interfacejava.lang.Iterable<JsValue>
-
last
public final JsValue last()
Returns the last element of this array.- Returns:
- the last JsValue of this JsArray
- Throws:
UserError- if this JsArray is empty
-
prepend
public final JsArray prepend(JsValue e, JsValue... others)
Adds one or more elements, starting from the last, to the front of this array.- Parameters:
e- the JsValue to be added to the front.others- more optional JsValue to be added to the front- Returns:
- a new JsArray
-
prependAll
public final JsArray prependAll(JsArray array)
Adds all the elements of the array, starting from the last, to the front of this array.- Parameters:
array- the JsArray of elements to be added to the front- Returns:
- a new JsArray
-
delete
public final JsArray delete(int index)
-
union
public final JsArray union(JsArray that, JsArray.TYPE ARRAY_AS)
this.union(that, SET)returnsthisplus those elements fromthatthat don't exist inthis.this.union(that, MULTISET)returnsthisplus those elements fromthatappended to the back.this.union(that, LIST)returnsthisplus those elements fromthatwhich position is>= this.size().- Parameters:
that- the other arrayARRAY_AS- option to define if arrays are considered SETS, LISTS OR MULTISET- Returns:
- a new json array of the same type as the inputs (mutable or immutable)
-
unionAll
public final JsArray unionAll(JsArray that)
returnsthisplus those elements fromthatwhich position is>= this.size(), and, at the positions where a container of the same type exists in boththisandthat, the result is their union. This operations doesn't make any sense if arrays are not considered lists, because there is no notion of order.- Parameters:
that- the other array- Returns:
- a new JsArray of the same type as the inputs (mutable or immutable)
-
-