java map格式化_将java.util.Map转换为格式化json

body, int tabCount, boolean addComma)

{

StringBuilder sbJsonBody = new StringBuilder();

sbJsonBody.append("{\n");

SetkeySet = body.keySet();

int count = 0;

int size = keySet.size();

for (String key : keySet)

{

count++;

sbJsonBody.append(buildJsonField(key, body.get(key), tabCount + 1, count != size));

}

sbJsonBody.append(getTab(tabCount));

sbJsonBody.append("}");

return sbJsonBody.toString();

}

/**

* 生成一个json字段即像这样的

* e.g.

* "eventName": "aaa"

*

* @param key

* @param value

* @param tabCount

* @param addComma

* @return

*/

private static String buildJsonField(String key, Object value, int tabCount, boolean addComma)

{

StringBuilder sbJsonField = new StringBuilder();

sbJsonField.append(getTab(tabCount));

sbJsonField.append(QUOTE).append(key).append(QUOTE).append(": ");

sbJsonField.append(buildJsonValue(value, tabCount, addComma));

return sbJsonField.toString();

}

/**

* 生成json值对象

* e.g.

* "string"

* 或

* {

* "key": "value"

* }

*

* @param value

* @param tabCount

* @param addComma

* @return

*/

private static String buildJsonValue(Object value, int tabCount, boolean addComma)

{

StringBuilder sbJsonValue = new StringBuilder();

if (value instanceof String)

{

sbJsonValue.append(QUOTE).append(value).append(QUOTE);

}

else if (value instanceof Integer || value instanceof Long || value instanceof Double)

{

sbJsonValue.append(value);

}

else if (value instanceof java.util.Date)

{

sbJsonValue.append(QUOTE).append(formatDate((java.util.Date) value)).append(QUOTE);

}

else if (value.getClass().isArray() || value instanceof java.util.Collection)

{

sbJsonValue.append(buildJsonArray(value, tabCount, addComma));

}

else if (value instanceof java.util.Map)

{

sbJsonValue.append(buildJsonBody((java.util.Map) value, tabCount, addComma));

}

sbJsonValue.append(buildJsonTail(addComma));

return sbJsonValue.toString();

}

/**

* 生成json数组对象

* [

* "value"

* ]

* 或

* [

* {

* "key": "value"

* }

* ]

*

* @param value

* @param tabCount

* @param addComma

* @return

*/

private static String buildJsonArray(Object value, int tabCount, boolean addComma)

{

StringBuilder sbJsonArray = new StringBuilder();

sbJsonArray.append("[\n");

Object[] objArray = null;

if (value.getClass().isArray())

{

objArray = (Object[]) value;

}

else if (value instanceof java.util.Collection)//将集合类改为对象数组

{

objArray = ((java.util.Collection) value).toArray();

}

int size = objArray.length;

int count = 0;

//循环数组里的每一个对象

for (Object obj : objArray)

{

//加上缩进,比上一行要多一个缩进

sbJsonArray.append(getTab(tabCount + 1));

//加上对象值,比如一个字符串"String",或者一个对象

sbJsonArray.append(buildJsonValue(obj, tabCount + 1, ++count != size));

}

sbJsonArray.append(getTab(tabCount));

sbJsonArray.append("]");

return sbJsonArray.toString();

}

/**

* 加上缩进,即几个\t

* TODO.

*

* @param count

* @return

*/

private static String getTab(int count)

{

StringBuilder sbTab = new StringBuilder();

while (count-- > 0)

{

sbTab.append("\t");

}

return sbTab.toString();

}

/**

* 加上逗号

* TODO.

*

* @param addComma

* @return

*/

private static String buildJsonTail(boolean addComma)

{

return addComma ? ",\n" : "\n";

}

/**

* 格式化日期

* TODO.

*

* @param date

* @return

*/

private static String formatDate(java.util.Date date)

{

return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值