public class StringIndenter
extends java.lang.Object
indent json, assumes the input is not yet indented. here is an example:
{
"FastResponseJs":{
"ajaxElements":{
"AjaxMapEntry":[
{
"theKey":{
"@class":"string",
"$":"ajax1a"
},
"theValue":{
"@class":"AjaxEvent",
"ajaxSendFormNames":{
"string":"ajax1"
},
"ajaxEventType":"NORMAL",
"eventName":"onblur",
"ajaxId":"PRLZY5QZ",
"screenElementId":"ajax1a",
"asynchronous":true,
"disableValidation":true
}
},
{
"theKey":{
...
Usage: String formatted = new StringIndenter(jsonString).result();
| Modifier and Type | Field and Description |
|---|---|
private int |
currentNumberOfIndents
current number of indents (times to is the indent
|
private int |
endTagIndex
current end tag
|
private java.lang.String |
json
chars to process
|
private java.lang.StringBuilder |
result
result
|
private int |
startTagIndex
current start tag
|
| Constructor and Description |
|---|
StringIndenter(java.lang.String theJson) |
| Modifier and Type | Method and Description |
|---|---|
private int |
findEndTagIndex()
after the last start tag, find the next end start tag
|
private static int |
findNextEndTagIndex(java.lang.String json,
int startFrom)
find the end tag from json and a start from index
|
private static int |
findNextStartTagIndex(java.lang.String json,
int startFrom)
find the start tag from json and a start from index
either look for a quote, {, [ or scalar.
|
private int |
findStartTagIndex()
after the last end tag, find the next start tag
|
private void |
indent()
indent the string
|
private static boolean |
instantIndent(java.lang.String json,
int index)
see if instant indent
|
private static boolean |
instantNewline(java.lang.String json,
int index)
see if instant indent
|
private static boolean |
instantUnindent(java.lang.String json,
int index)
see if instant unindent
|
private static boolean |
instantUnindentTwoChars(java.lang.String json,
int index)
see if instant indent
|
private void |
newlineIndent()
put a newline and indent
|
private boolean |
onNewline()
see if current pos is on newline
|
private void |
printNewlineIndent(int start,
int end)
put a newline and indent
|
private static java.lang.String |
repeat(java.lang.String theString,
int times)
repeat a string a certain number of times.
|
java.lang.String |
result()
get the result
|
private void |
unindent()
unindent a previous indent if it is there
|
private java.lang.String json
private int startTagIndex
private int endTagIndex
private int currentNumberOfIndents
private java.lang.StringBuilder result
public StringIndenter(java.lang.String theJson)
theJson - is the json to format
indenterpublic java.lang.String result()
private void indent()
private boolean onNewline()
private static boolean instantIndent(java.lang.String json,
int index)
json - index - private static boolean instantNewline(java.lang.String json,
int index)
json - index - private static boolean instantUnindent(java.lang.String json,
int index)
json - index - private static boolean instantUnindentTwoChars(java.lang.String json,
int index)
json - index - private void printNewlineIndent(int start,
int end)
start - end - private void newlineIndent()
private static java.lang.String repeat(java.lang.String theString,
int times)
theString - times - private void unindent()
private int findStartTagIndex()
private int findEndTagIndex()
private static int findNextStartTagIndex(java.lang.String json,
int startFrom)
json - startFrom - private static int findNextEndTagIndex(java.lang.String json,
int startFrom)
json - startFrom - is the char after the start of tag