JSON字符串控制台格式化输出

xiaoxiao2025-05-02  20

1.正常情况下返回的json数据格式如下:

{"header":{"transSn":"e33128bb7622462ebfb2cbfcc46baa14","dateTime":"20181002110000","serviceCode":"********","appId":"999999999999","bizId":"000000","version":"1.0","resType":"A","resCode":"SSS000","resMsg":"交易成功(业务附加消息:*****)"},"resBody":{"operator":"lgh","rowNumStart":"1","pageRowNum":"100","pageFlag":"0","totalRowNum":"1","orderFlag":"0","orderField":"","result":[{"flag":"1","riskCode":"00567000","riskName":"567*********","prem":"520.00","amntOrMult":"***","amnt":"200000","polNo":"12177"}]}}

默认都是一行输出,或者在HTML进过一些插件格式化之后才会显示比较美观的格式。那么在Java后台如何进行json格式化输出呢下面直接贴代码。

2.可以封装一个工具类专门转换json格式化:

/** * @param resString * @return String * @throws * @Description 响应数据格式化 * @author lgh * @date 2018/10/29-13:45 */ private String responseFormat(String resString){ StringBuffer jsonForMatStr = new StringBuffer(); int level = 0; for(int index=0;index<resString.length();index++)//将字符串中的字符逐个按行输出 { //获取s中的每个字符 char c = resString.charAt(index); //level大于0并且jsonForMatStr中的最后一个字符为\n,jsonForMatStr加入\t if (level > 0 && '\n' == jsonForMatStr.charAt(jsonForMatStr.length() - 1)) { jsonForMatStr.append(getLevelStr(level)); } //遇到"{"和"["要增加空格和换行,遇到"}"和"]"要减少空格,以对应,遇到","要换行 switch (c) { case '{': case '[': jsonForMatStr.append(c + "\n"); level++; break; case ',': jsonForMatStr.append(c + "\n"); break; case '}': case ']': jsonForMatStr.append("\n"); level--; jsonForMatStr.append(getLevelStr(level)); jsonForMatStr.append(c); break; default: jsonForMatStr.append(c); break; } } return jsonForMatStr.toString(); } /** * @param level * @return * @throws * @author lgh * @date 2018/10/29-14:29 */ private String getLevelStr(int level) { StringBuffer levelStr = new StringBuffer(); for (int levelI = 0; levelI < level; levelI++) { levelStr.append("\t"); } return levelStr.toString(); }

3.同样的数据输出之后就达到预期效果:

{ "header":{ "transSn":"e33128bb7622462ebfb2cbfcc46baa14", "dateTime":"20181002110000", "serviceCode":"********", "appId":"999999999999", "bizId":"000000", "version":"1.0", "resType":"A", "resCode":"SSS000", "resMsg":"交易成功(业务附加消息:***)" }, "resBody":{ "operator":"lgh", "rowNumStart":"1", "pageRowNum":"100", "pageFlag":"0", "totalRowNum":"1", "orderFlag":"0", "orderField":"", "result":[ { "flag":"1", "riskCode":"00567000", "riskName":"567 ****", "prem":"520.00", "amntOrMult":"***", "amnt":"200000", "polNo":"12177" } ] } }

如有披露或问题欢迎留言或者入群探讨(仅仅是个json格式化的工具分享)

转载请注明原文地址: https://www.6miu.com/read-5029666.html

最新回复(0)