Java-Json的格式化和转参数表格
⾸先感谢 这个⽹站提供的帮助,然后⾥⾯有两个功能Json的格式化和转参数表格,在这⾥我使⽤Java代码来实现,以便于我们使⽤相应的开放接⼝功能。
Json美化代码本⼈参考⽹上代码,Json转参数表格代码全部由本⼈完成开发。
⾸先需要下载 并导⼊到项⽬中去。
封装后的⼯具类代码如下(可直接复制使⽤):
st;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.TypeReference;
import org.apache.http.util.TextUtils;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Stack;
/**
* Created by 张俊强~ on 2017/10/17.
*/
public class JSONUtils {
private static String SPACE = " ";
private static Stack<String> tableStack = new Stack<String>();
private static Integer tableLevel = 0; //标志当前table的层级
public final static int JSON_TYPE_OBJECT=1;
public final static int JSON_TYPE_ARRAY=2;
public final static int JSON_TYPE_ERROR=3;
/**
* 返回格式化JSON字符串.
*
* @param json 未格式化的JSON字符串.
* @return格式化的JSON字符串 .
*/
public static String formatJson(String json) {
StringBuffer result = new StringBuffer();
int length = json.length();
int number = 0;
char key = 0;
//遍历输⼊字符串。
for (int i = 0; i < length; i++) {
//1、获取当前字符。
key = json.charAt(i);
//2、如果当前字符是前⽅括号、前花括号做如下处理:
if ((key == '[') || (key == '{')) {
//(1)打印:当前字符。
result.append(key);
//(2)前⽅括号、前花括号,的后⾯必须换⾏。打印:换⾏。
result.append('\n');
/
/(3)每出现⼀次前⽅括号、前花括号;缩进次数增加⼀次。打印:新⾏缩进。
number++;
result.append(indent(number));
//(4)进⾏下⼀次循环。
continue;
continue;
}
//3、如果当前字符是后⽅括号、后花括号做如下处理:
if ((key == ']') || (key == '}')) {
//(1)后⽅括号、后花括号,的前⾯必须换⾏。打印:换⾏。
result.append('\n');
/
/(2)每出现⼀次后⽅括号、后花括号;缩进次数减少⼀次。打印:缩进。
number--;
result.append(indent(number));
//(3)打印:当前字符。
result.append(key);
//(4)如果当前字符后⾯还有字符,并且字符不为“,”,打印:换⾏。
if (((i + 1) < length) && (json.charAt(i + 1) != ',')) {
result.append('\n');
}
//(5)继续下⼀次循环。
continue;
}
//4、如果当前字符是逗号。逗号后⾯换⾏,并缩进,不改变缩进次数。
if ((key == ',')) {
result.append(key);
result.append('\n');
result.append(indent(number));
continue;
}
//5、打印:当前字符。
result.append(key);
}
String();
}
/**
* 返回指定次数的缩进字符串。每⼀次缩进三个空格,即SPACE.
java switch case string*
* @param number 缩进次数.
* @return指定缩进次数的字符串.
*/
private static String indent(int number) {
StringBuffer result = new StringBuffer();
for (int i = 0; i < number; i++) {
result.append(SPACE);
}
String();
}
/**
* 将json转参数表格.
*
* @param json 未格式化的JSON字符串.
* @return the string
*/
public static String formatJsonToTable(String json) {
tableLevel++;
String result = "";
LinkedHashMap<String, String> jsonMap = JSON.parseObject(json, new TypeReference<LinkedHashMap<String, String>>() { });
for (Map.Entry<String, String> entry : Set()) {
tableStack.add("|" + Key() + "| string | 是 | ⽆ |\n");
switch (Value())) {
case JSONUtils.JSON_TYPE_ARRAY:
case JSONUtils.JSON_TYPE_ARRAY:
JSONArray jsonArray = JSON.Value().toString());
if (jsonArray.size() > 0) {
tableStack.pop();
String listPre = "";
for (int i = 0; i < tableLevel; i++) {
listPre += " -";
}
tableStack.add("|" + listPre + " " + Key() + "| object | 是 | ⽆ |\n");
for (int i = 0; i < jsonArray.size(); i++) {
(i).toString());
}
}
break;
case JSONUtils.JSON_TYPE_OBJECT:
Value());
break;
case JSONUtils.JSON_TYPE_ERROR:
break;
default:
break;
}
}
tableLevel--;
if (tableLevel == 0) {
for (int i = 0; i < tableStack.size(); i++) {
result += (i);
}
}
return result;
}
public static int getJSONType(String str) {
if (TextUtils.isEmpty(str)) {
return JSONUtils.JSON_TYPE_ERROR;
}
final char[] strChar = str.substring(0, 1).toCharArray();
final char firstChar = strChar[0];
if (firstChar == '{') {
return JSONUtils.JSON_TYPE_OBJECT;
} else if (firstChar == '[') {
return JSONUtils.JSON_TYPE_ARRAY;
} else {
return JSONUtils.JSON_TYPE_ERROR;
}
}
}
如下未格式化的Json为例:
{"fields":[{"field":"task_number","op":"like","value":"20"}],"page":1,"size":10}
格式化之后如下:
{
"fields":[
{
"field":"task_number",
"op":"like",
"value":"20"
}
],
"page":1,
"size":10
}
转参数表格之后如下:
| - fields| object | 是 | ⽆ |
|field| string | 是 | ⽆ |
|op| string | 是 | ⽆ |
|value| string | 是 | ⽆ |
|page| string | 是 | ⽆ |
|size| string | 是 | ⽆ |
在参数表格上加上头信息,即是md格式,可解析如下:
以上即相关内容。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论