Class JsonFlattener
- java.lang.Object
-
- com.github.wnameless.json.flattener.JsonFlattener
-
public final class JsonFlattener extends Object
JsonFlattenerflattens any JSON nested objects or arrays into a flattened JSON string or a Map<Stirng, Object>. The String key will represents the corresponding position of value in the original nested objects or arrays and the Object value are either String, Boolean, Long, Double or null.
For example:
A nested JSON
{ "a" : { "b" : 1, "c": null, "d": [false, true] }, "e": "f", "g":2.3 }
can be turned into a flattened JSON
{ "a.b": 1, "a.c": null, "a.d[0]": false, "a.d[1]": true, "e": "f", "g":2.3 }
or into a Map
{
a.b=1,
a.c=null,
a.d[0]=false,
a.d[1]=true,
e=f,
g=2.3
}- Author:
- Wei-Ming Wu
-
-
Field Summary
Fields Modifier and Type Field Description static StringROOTROOTis the default key of the Map returned byflattenAsMap(com.github.wnameless.json.base.JsonValueBase<?>).
-
Constructor Summary
Constructors Constructor Description JsonFlattener(com.github.wnameless.json.base.JsonCore<?> jsonCore, com.github.wnameless.json.base.JsonValueBase<?> json)Creates a JSON flattener by givenJsonCoreandJsonValueBase.JsonFlattener(com.github.wnameless.json.base.JsonCore<?> jsonCore, Reader jsonReader)Creates a JSON flattener by givenJsonCoreand JSON string reader.JsonFlattener(com.github.wnameless.json.base.JsonCore<?> jsonCore, String json)Creates a JSON flattener by givenJsonCoreand JSON string.JsonFlattener(com.github.wnameless.json.base.JsonValueBase<?> json)Creates a JSON flattener by givenJsonValueBase.JsonFlattener(Reader jsonReader)Creates a JSON flattener by given JSON string reader.JsonFlattener(String json)Creates a JSON flattener by given JSON string.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanequals(Object o)Stringflatten()Returns a flattened JSON string.static Stringflatten(com.github.wnameless.json.base.JsonValueBase<?> jsonVal)Returns a flattened JSON string.static Stringflatten(String json)Returns a flattened JSON string.Map<String,Object>flattenAsMap()Returns a flattened JSON as Map.static Map<String,Object>flattenAsMap(com.github.wnameless.json.base.JsonValueBase<?> jsonVal)Returns a flattened JSON as Map.static Map<String,Object>flattenAsMap(String json)Returns a flattened JSON as Map.inthashCode()JsonFlattenerignoreReservedCharacters()After this option is enable, all reserved characters used in keys will stop to be checked and escaped.StringtoString()JsonFlattenerwithFlattenMode(FlattenMode flattenMode)A fluent setter to setup a mode of theJsonFlattener.JsonFlattenerwithKeyTransformer(KeyTransformer keyTrans)A fluent setter to setup aKeyTransformerof theJsonFlattener.JsonFlattenerwithLeftAndRightBrackets(char leftBracket, char rightBracket)A fluent setter to setup the left and right brackets within a key in the flattened JSON.JsonFlattenerwithPrintMode(PrintMode printMode)A fluent setter to setup a print mode of theJsonFlattener.JsonFlattenerwithSeparator(char separator)A fluent setter to setup the separator within a key in the flattened JSON.JsonFlattenerwithStringEscapePolicy(CharSequenceTranslatorFactory policy)A fluent setter to setup the JSON string escape policy.
-
-
-
Field Detail
-
ROOT
public static final String ROOT
ROOTis the default key of the Map returned byflattenAsMap(com.github.wnameless.json.base.JsonValueBase<?>). WhenJsonFlattenerprocesses a JSON string which is not a JSON object or array, the final outcome may not suit in a Java Map. At that moment,JsonFlattenerwill put the result in the Map withROOTas its key.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
JsonFlattener
public JsonFlattener(com.github.wnameless.json.base.JsonValueBase<?> json)
Creates a JSON flattener by givenJsonValueBase.- Parameters:
json- aJsonValueBase
-
JsonFlattener
public JsonFlattener(com.github.wnameless.json.base.JsonCore<?> jsonCore, com.github.wnameless.json.base.JsonValueBase<?> json)Creates a JSON flattener by givenJsonCoreandJsonValueBase.- Parameters:
jsonCore- aJsonCorejson- a JSON string
-
JsonFlattener
public JsonFlattener(String json)
Creates a JSON flattener by given JSON string.- Parameters:
json- a JSON string
-
JsonFlattener
public JsonFlattener(com.github.wnameless.json.base.JsonCore<?> jsonCore, String json)Creates a JSON flattener by givenJsonCoreand JSON string.- Parameters:
jsonCore- aJsonCorejson- a JSON string
-
JsonFlattener
public JsonFlattener(Reader jsonReader) throws IOException
Creates a JSON flattener by given JSON string reader.- Parameters:
jsonReader- a JSON reader- Throws:
IOException- if the jsonReader cannot be read
-
JsonFlattener
public JsonFlattener(com.github.wnameless.json.base.JsonCore<?> jsonCore, Reader jsonReader) throws IOExceptionCreates a JSON flattener by givenJsonCoreand JSON string reader.- Parameters:
jsonCore- aJsonCorejsonReader- a JSON string- Throws:
IOException- if the jsonReader cannot be read
-
-
Method Detail
-
flatten
public static String flatten(com.github.wnameless.json.base.JsonValueBase<?> jsonVal)
Returns a flattened JSON string.- Parameters:
jsonVal- a JSON data which wraps byJsonValueBase- Returns:
- a flattened JSON string
-
flatten
public static String flatten(String json)
Returns a flattened JSON string.- Parameters:
json- the JSON string- Returns:
- a flattened JSON string
-
flattenAsMap
public static Map<String,Object> flattenAsMap(com.github.wnameless.json.base.JsonValueBase<?> jsonVal)
Returns a flattened JSON as Map.- Parameters:
jsonVal- a JSON data which wraps byJsonValueBase- Returns:
- a flattened JSON as Map
-
flattenAsMap
public static Map<String,Object> flattenAsMap(String json)
Returns a flattened JSON as Map.- Parameters:
json- the JSON string- Returns:
- a flattened JSON as Map
-
withFlattenMode
public JsonFlattener withFlattenMode(FlattenMode flattenMode)
A fluent setter to setup a mode of theJsonFlattener.- Parameters:
flattenMode- aFlattenMode- Returns:
- this
JsonFlattener
-
withStringEscapePolicy
public JsonFlattener withStringEscapePolicy(CharSequenceTranslatorFactory policy)
A fluent setter to setup the JSON string escape policy.- Parameters:
policy- anyCharSequenceTranslatorFactoryor aStringEscapePolicy- Returns:
- this
JsonFlattener
-
withSeparator
public JsonFlattener withSeparator(char separator)
A fluent setter to setup the separator within a key in the flattened JSON. The default separator is a dot(.).- Parameters:
separator- any character- Returns:
- this
JsonFlattener
-
withLeftAndRightBrackets
public JsonFlattener withLeftAndRightBrackets(char leftBracket, char rightBracket)
A fluent setter to setup the left and right brackets within a key in the flattened JSON. The default left and right brackets are left square bracket([) and right square bracket(]).- Parameters:
leftBracket- any characterrightBracket- any character- Returns:
- this
JsonFlattener
-
withPrintMode
public JsonFlattener withPrintMode(PrintMode printMode)
A fluent setter to setup a print mode of theJsonFlattener. The default print mode is minimal.- Parameters:
printMode- aPrintMode- Returns:
- this
JsonFlattener
-
withKeyTransformer
public JsonFlattener withKeyTransformer(KeyTransformer keyTrans)
A fluent setter to setup aKeyTransformerof theJsonFlattener.- Parameters:
keyTrans- aKeyTransformer- Returns:
- this
JsonFlattener
-
ignoreReservedCharacters
public JsonFlattener ignoreReservedCharacters()
After this option is enable, all reserved characters used in keys will stop to be checked and escaped.
Example:
Input JSON: {"matrix":{"agent.smith":"1999"}}
Flatten with option disable: {"matrix[\"agent.smith\"]":"1999"}
Flatten with option enable: {"matrix.agent.smith":"1999"}
JsonUnflattenermay cause unpredictable results with the JSON produced by aJsonFlattenerwith this option enable.- Returns:
- this
JsonFlattener
-
flatten
public String flatten()
Returns a flattened JSON string.- Returns:
- a flattened JSON string
-
flattenAsMap
public Map<String,Object> flattenAsMap()
Returns a flattened JSON as Map.- Returns:
- a flattened JSON as Map
-
-