|
- package com.xl.util;
7 M8 h1 B4 b1 n - public class JsonFormat {
' i1 n' |4 G( s/ h" ^0 p7 W - /**6 m; u7 K) Y4 E: P# t) J" }' A
- * 格式化5 f. k6 F5 N: r |2 E4 c, d
- * . |9 Y1 Z4 u% H& F% l
- * @param jsonStr
! h6 }, B! U% C ]/ h, M$ q% N - * @return6 `; Q0 E1 M( q5 I3 n
- * @author lizhgb/ N+ z9 O. f& h; c+ f% H
- * @Date 2015-10-14 下午1:17:35) b* b5 C! h/ I0 W# }; R
- * @Modified 2017-04-28 下午8:55:35' S" G5 E- |0 Z( v
- */8 Z5 p0 S% f' k/ {
- public static String formatJson(String jsonStr) {) H. ?4 G3 }7 |/ l5 x9 q
-
6 L- [" n+ q& x3 j4 t- k! q. k/ F - if (null == jsonStr || "".equals(jsonStr))! s$ j* o1 }) @; ~& ~6 ]& S
- return "";8 h' P# v+ T9 C% P
- jsonStr = jsonStr.replace(" ","");
+ { S3 w/ i" e3 `% A3 F: ~. d n - jsonStr = jsonStr.replace("\t","");- w! s6 H$ \9 }9 r8 I. v/ ]0 i o$ s
- * h+ U& z8 W! _' B. {
- StringBuilder sb = new StringBuilder();9 T* f& c( Z7 t7 d- G0 x2 I
- char last = '\0';0 j( V, o7 [& _2 p: t9 A
- char current = '\0';8 S" D( v+ H" |& N% u- Y8 z# t
- int indent = 0;
1 ~4 w( E& K) M5 m7 u, @: K) b - boolean isInQuotationMarks = false;
6 D5 T7 ~3 Y- z7 x$ d, b7 P* V - for (int i = 0; i < jsonStr.length(); i++) {
% a6 h/ h }, v' x6 T2 m - last = current; `4 f7 G. l" b# R+ g! @4 K
- current = jsonStr.charAt(i);
% l+ g6 t% u5 v- F- q - switch (current) {
/ }2 d: _# M7 v6 _ - case '"':
0 I4 T7 J! j& t' H2 ~) E/ i& q - if (last != '\\'){
9 q! E; x, m. h9 B0 S - isInQuotationMarks = !isInQuotationMarks;
$ u4 e" \& c* [8 w) s - }2 x7 P8 K( R% p! y% w
- sb.append(current);
$ H, N) ~& K8 H, J - break;7 p3 N6 g# m% w
- case '{':
, J) u' H/ { n. H' M) g M; v! T - case '[':) w( ~* {5 `$ q2 g) ^
- sb.append(current);
S4 e* s* ^" G: N- x ~ - if (!isInQuotationMarks) {" t) h' V0 e( N1 E& l
- sb.append('\n');
# O$ t" }" z+ ^9 E. V% W - indent++;
* i" _( W4 {8 \0 \1 \/ w5 i - addIndentBlank(sb, indent);
1 w3 v* A3 R( c7 R) B - }0 u: j2 E" U% J) n/ Q2 D' I1 s
- break;7 w3 d# ?2 g+ ?8 q5 @3 T
- case '}':
, r* L( U8 |4 x( x - case ']':& A7 _8 X3 o4 V' m* z6 U! K! c
- if (!isInQuotationMarks) {
4 |+ d. n7 r! w$ S - sb.append('\n');" E3 a) S/ ` h; x. n, d4 L
- indent--;
, t- H" g6 V: c# O - addIndentBlank(sb, indent);
/ q& {; K8 M4 z5 E+ _9 c - }
: U$ a2 }2 r1 M$ m/ `4 [; k+ W% z/ w - sb.append(current);
4 r# t$ ~$ t. [9 |1 T - break;
% ?/ D6 J+ F* j2 o - case ',':* n N' L8 d- q" d7 b: ?
- sb.append(current);* T# o8 K; l+ e+ ?0 U/ ?
- if (last != '\\' && !isInQuotationMarks) {
6 n* h/ J! H' D9 b: P. o4 c9 U - sb.append('\n');. m0 }! l/ O' G$ G, P# u# Q4 h1 h- C+ o
- addIndentBlank(sb, indent);" x& s! A7 k# a) Y. s N' D
- }
' v0 k, q h; v) z+ b9 ] - break;5 E! z3 _/ _" r4 ?) B/ L
- case ' ':
4 I! P' }6 z$ |* z: i7 m8 N - break;
- K4 j, T( O# x - case '\n':
8 n8 x) S! X! p, u7 J - break;3 l* I! U" w& m
- default:
}6 |0 Z. P0 K4 C: {+ Y - if(current!='\n')
% f# J( @$ n* X9 m. w - sb.append(current);
, ~4 Q; g$ [. }( S! T A: j - }: ^: j9 I! Q! z: P1 l6 ]: ^8 f
- }3 c/ }8 f8 N* \# f( D5 {; l
4 B, f# X5 b3 [' G+ N+ E- return sb.toString();9 L) X/ {0 j5 U3 i% a
- }2 T0 P; m* u7 C( W1 h
+ I" a& J! C/ c1 t# ` A- C- /**8 L% t4 r x, [) b( v; |
- * 添加space0 y% @: N/ A2 B
- *
' X+ R: H8 v' Y - * @param sb9 \0 h, B1 E% A9 O. K+ u# g; U0 T
- * @param indent
: |# n+ w( M2 z& I - * @author lizhgb
2 i+ h8 x: i2 t" ` - * @Date 2015-10-14 上午10:38:04
( ]5 a( ]' Q5 \3 X( ` - */
% Q$ A8 d8 d4 `( |0 a - private static void addIndentBlank(StringBuilder sb, int indent) {
+ E/ e p' H, p* ? - for (int i = 0; i < indent; i++) {8 ]4 f/ |8 C, i% P# W
- sb.append(" ");
5 @$ b; @( W, W - }+ U. j6 U8 _& x
- }
; p5 I+ _+ c% O. b# ]. _# Y - /*
0 Q: K5 d; R r/ y( Q - public static void ifgetJson(String reqjson) throws JsonException{
; t u# J+ P) b0 b - try {
+ ~' \/ X/ q9 T" i4 m& _) G - JSONObject jsonObject = JSONObject.fromObject(reqjson);
9 w, d0 p- ~/ V; i. ^ - } catch (JSONException e) {0 P5 @- j* R) f$ \4 {
- throw new JsonException("进件系统请求json串,不是正规json格式,请求json串为=="+reqjson);
c! L0 e& }6 Q. L - ( B9 N/ Q0 x3 ^/ _0 Z* o
- }
2 G3 J% F/ Q, R; `7 h2 U; F# o; i# H - }*/
0 E# J k$ D) K K6 t0 \ - 9 Z( X2 ?4 w, t/ l
- public static void main(String arr[]){# e. b/ h8 x/ W# y
- System.out.println( JsonFormat.formatJson("{main:"",list:[],code:200}"));
/ Q( y( j) {" Q- J! J+ k - }
* G+ C5 e# R) W2 j8 |0 A; f - }
& i+ K0 q3 R {/ a2 `
复制代码 |
|