登录  | 立即注册

游客您好!登录后享受更多精彩

查看: 875|回复: 0

【Java】JsonFormat

[复制链接]

444

主题

509

帖子

2051

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2051

荣誉管理论坛元老

发表于 2021-6-30 22:08:00 来自手机 | 显示全部楼层 |阅读模式 来自:
  1. package com.xl.util;
    7 M8 h1 B4 b1 n
  2. public class JsonFormat {
    ' i1 n' |4 G( s/ h" ^0 p7 W
  3.     /**6 m; u7 K) Y4 E: P# t) J" }' A
  4.      * 格式化5 f. k6 F5 N: r  |2 E4 c, d
  5.      * . |9 Y1 Z4 u% H& F% l
  6.      * @param jsonStr
    ! h6 }, B! U% C  ]/ h, M$ q% N
  7.      * @return6 `; Q0 E1 M( q5 I3 n
  8.      * @author lizhgb/ N+ z9 O. f& h; c+ f% H
  9.      * @Date 2015-10-14 下午1:17:35) b* b5 C! h/ I0 W# }; R
  10.      * @Modified 2017-04-28 下午8:55:35' S" G5 E- |0 Z( v
  11.      */8 Z5 p0 S% f' k/ {
  12.     public static String formatJson(String jsonStr) {) H. ?4 G3 }7 |/ l5 x9 q
  13.            
    6 L- [" n+ q& x3 j4 t- k! q. k/ F
  14.         if (null == jsonStr || "".equals(jsonStr))! s$ j* o1 }) @; ~& ~6 ]& S
  15.             return "";8 h' P# v+ T9 C% P
  16.         jsonStr = jsonStr.replace(" ","");
    + {  S3 w/ i" e3 `% A3 F: ~. d  n
  17.                 jsonStr = jsonStr.replace("\t","");- w! s6 H$ \9 }9 r8 I. v/ ]0 i  o$ s
  18. * h+ U& z8 W! _' B. {
  19.         StringBuilder sb = new StringBuilder();9 T* f& c( Z7 t7 d- G0 x2 I
  20.         char last = '\0';0 j( V, o7 [& _2 p: t9 A
  21.         char current = '\0';8 S" D( v+ H" |& N% u- Y8 z# t
  22.         int indent = 0;
    1 ~4 w( E& K) M5 m7 u, @: K) b
  23.         boolean isInQuotationMarks = false;
    6 D5 T7 ~3 Y- z7 x$ d, b7 P* V
  24.         for (int i = 0; i < jsonStr.length(); i++) {
    % a6 h/ h  }, v' x6 T2 m
  25.             last = current;  `4 f7 G. l" b# R+ g! @4 K
  26.             current = jsonStr.charAt(i);
    % l+ g6 t% u5 v- F- q
  27.             switch (current) {
    / }2 d: _# M7 v6 _
  28.                                 case '"':
    0 I4 T7 J! j& t' H2 ~) E/ i& q
  29.                                         if (last != '\\'){
    9 q! E; x, m. h9 B0 S
  30.                                                 isInQuotationMarks = !isInQuotationMarks;
    $ u4 e" \& c* [8 w) s
  31.                                         }2 x7 P8 K( R% p! y% w
  32.                                         sb.append(current);
    $ H, N) ~& K8 H, J
  33.                                         break;7 p3 N6 g# m% w
  34.                                 case '{':
    , J) u' H/ {  n. H' M) g  M; v! T
  35.                                 case '[':) w( ~* {5 `$ q2 g) ^
  36.                                         sb.append(current);
      S4 e* s* ^" G: N- x  ~
  37.                                         if (!isInQuotationMarks) {" t) h' V0 e( N1 E& l
  38.                                                 sb.append('\n');
    # O$ t" }" z+ ^9 E. V% W
  39.                                                 indent++;
    * i" _( W4 {8 \0 \1 \/ w5 i
  40.                                                 addIndentBlank(sb, indent);
    1 w3 v* A3 R( c7 R) B
  41.                                         }0 u: j2 E" U% J) n/ Q2 D' I1 s
  42.                                         break;7 w3 d# ?2 g+ ?8 q5 @3 T
  43.                                 case '}':
    , r* L( U8 |4 x( x
  44.                                 case ']':& A7 _8 X3 o4 V' m* z6 U! K! c
  45.                                         if (!isInQuotationMarks) {
    4 |+ d. n7 r! w$ S
  46.                                                 sb.append('\n');" E3 a) S/ `  h; x. n, d4 L
  47.                                                 indent--;
    , t- H" g6 V: c# O
  48.                                                 addIndentBlank(sb, indent);
    / q& {; K8 M4 z5 E+ _9 c
  49.                                         }
    : U$ a2 }2 r1 M$ m/ `4 [; k+ W% z/ w
  50.                                         sb.append(current);
    4 r# t$ ~$ t. [9 |1 T
  51.                                         break;
    % ?/ D6 J+ F* j2 o
  52.                                 case ',':* n  N' L8 d- q" d7 b: ?
  53.                                         sb.append(current);* T# o8 K; l+ e+ ?0 U/ ?
  54.                                         if (last != '\\' && !isInQuotationMarks) {
    6 n* h/ J! H' D9 b: P. o4 c9 U
  55.                                                 sb.append('\n');. m0 }! l/ O' G$ G, P# u# Q4 h1 h- C+ o
  56.                                                 addIndentBlank(sb, indent);" x& s! A7 k# a) Y. s  N' D
  57.                                         }
    ' v0 k, q  h; v) z+ b9 ]
  58.                                         break;5 E! z3 _/ _" r4 ?) B/ L
  59.                                 case ' ':
    4 I! P' }6 z$ |* z: i7 m8 N
  60.                                         break;
    - K4 j, T( O# x
  61.                                 case '\n':
    8 n8 x) S! X! p, u7 J
  62.                                         break;3 l* I! U" w& m
  63.                                 default:
      }6 |0 Z. P0 K4 C: {+ Y
  64.                                     if(current!='\n')
    % f# J( @$ n* X9 m. w
  65.                                         sb.append(current);
    , ~4 Q; g$ [. }( S! T  A: j
  66.             }: ^: j9 I! Q! z: P1 l6 ]: ^8 f
  67.         }3 c/ }8 f8 N* \# f( D5 {; l

  68. 4 B, f# X5 b3 [' G+ N+ E
  69.         return sb.toString();9 L) X/ {0 j5 U3 i% a
  70.     }2 T0 P; m* u7 C( W1 h

  71. + I" a& J! C/ c1 t# `  A- C
  72.     /**8 L% t4 r  x, [) b( v; |
  73.      * 添加space0 y% @: N/ A2 B
  74.      *
    ' X+ R: H8 v' Y
  75.      * @param sb9 \0 h, B1 E% A9 O. K+ u# g; U0 T
  76.      * @param indent
    : |# n+ w( M2 z& I
  77.      * @author lizhgb
    2 i+ h8 x: i2 t" `
  78.      * @Date 2015-10-14 上午10:38:04
    ( ]5 a( ]' Q5 \3 X( `
  79.      */
    % Q$ A8 d8 d4 `( |0 a
  80.     private static void addIndentBlank(StringBuilder sb, int indent) {
    + E/ e  p' H, p* ?
  81.         for (int i = 0; i < indent; i++) {8 ]4 f/ |8 C, i% P# W
  82.             sb.append("  ");
    5 @$ b; @( W, W
  83.         }+ U. j6 U8 _& x
  84.     }
    ; p5 I+ _+ c% O. b# ]. _# Y
  85. /*
    0 Q: K5 d; R  r/ y( Q
  86.     public static    void ifgetJson(String reqjson) throws JsonException{
    ; t  u# J+ P) b0 b
  87.         try {
    + ~' \/ X/ q9 T" i4 m& _) G
  88.             JSONObject jsonObject = JSONObject.fromObject(reqjson);
    9 w, d0 p- ~/ V; i. ^
  89.         } catch (JSONException e) {0 P5 @- j* R) f$ \4 {
  90.             throw new JsonException("进件系统请求json串,不是正规json格式,请求json串为=="+reqjson);
      c! L0 e& }6 Q. L
  91. ( B9 N/ Q0 x3 ^/ _0 Z* o
  92.         }
    2 G3 J% F/ Q, R; `7 h2 U; F# o; i# H
  93.     }*/
    0 E# J  k$ D) K  K6 t0 \
  94.         9 Z( X2 ?4 w, t/ l
  95.         public static void main(String arr[]){# e. b/ h8 x/ W# y
  96.                 System.out.println( JsonFormat.formatJson("{main:"",list:[],code:200}"));
    / Q( y( j) {" Q- J! J+ k
  97.         }
    * G+ C5 e# R) W2 j8 |0 A; f
  98. }
    & i+ K0 q3 R  {/ a2 `
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|星空社区 |网站地图

GMT+8, 2024-4-30 04:31 , Processed in 0.050736 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表