1 package waf.json;
2
3 import java.lang.reflect.Type;
4 import java.util.List;
5
6 import waf.json.adatpter.CommonTypeAdapter;
7
8 import com.google.gson.FieldNamingPolicy;
9 import com.google.gson.Gson;
10 import com.google.gson.GsonBuilder;
11 import com.google.gson.JsonElement;
12 import com.google.gson.JsonObject;
13 import com.google.gson.JsonParser;
14 import com.google.gson.reflect.TypeToken;
15
16 /**
17 *
18 * @author waf.wang
19 *
20 */
21 public class JsonUtil
22 {
23
24 public static void main(String[] args)
25 {
26 String abc="{\"clientImsi\":\"cb1766441b635e3a23904fb69e4d59c3\",\"device_id\":\"fdbea9f8-d58f-4cce-b108-d683eb4361d9\",\"resultCode\":\"SUCCESS\",\"sdkToken\":\"c2f2550501df2c721a2714e9640c644d\",\"timestamp\":1518189642465}";
27 abc="{\"playExtResponse\":{\"codec\":\"normal\",\"playUrl\":\"http://vod.gslb.cmvideo.cn/depository/asset/zhengshi/3009/265/388/3009265388/media/3009265388_5001546912_54.mp4.m3u8?msisdn=18469129593&sid=3009265720×tamp=20180110232139&Channel_ID=312800040040003&pid=2028595273&ProgramID=608068870&encrypt=ce83d219c4480d4c47be425425956f2a\",\"mediaUsageCode\":\"54\"},\"authInfo\":{\"userId\":\"955077447\",\"resourceId\":\"2028595273\",\"resourceType\":\"PMS_PRODUCT_ID\",\"authType\":\"BOSS_MONTH\",\"remainTimes\":-1,\"expiredTime\":\"UNLIMITED\"}}";
28
29 System.out.println(JsonUtil.format(abc,""));
30 System.out.println("------------");
31 System.out.println(JsonUtil.format(abc,"\t"));
32
33 }
34
35 public static <T> T fromJson(String json,Class<T> classOfT)
36 {
37 return fromJson(json,classOfT,false);
38 }
39
40 public static <T> T fromJson(String json,Class<T> classOfT,boolean under2Camel)
41 {
42 return fromJson(json,(Type)classOfT,under2Camel);
43 }
44
45 public static <T> T fromJson(String json,Type type)
46 {
47 return fromJson(json,type,false);
48 }
49
50 public static <T> T fromJson(String json,Type type,boolean underline2Camel)
51 {
52 T ret=null;
53
54 if(isValidJson(json))
55 {
56 GsonBuilder gb=new GsonBuilder();
57 if(underline2Camel)
58 {
59 gb.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES);
60 }
61 // gb.setDateFormat("yyyy-MM-dd HH:mm");
62 // gb.registerTypeAdapter(Date.class,new DateTypeAdapter());
63 // gb.registerTypeAdapter(Long.class,new LongTypeAdapter());
64 //gb.registerTypeAdapter(Integer.class,new IntegerTypeAdapter());
65
66 // 如果没有这句,json2map的时候,整型20会被反序列化为浮点数20.0
67 //gb.registerTypeAdapter(new TypeToken<Map<String,Object>>(){}.getType(),new MapTypeAdapter());
68
69 //gb.registerTypeAdapter(List.class,new CommonTypeAdapter());
70
71 Gson gson=gb.create();
72 try
73 {
74 ret=gson.fromJson(json,type);
75 }
76 catch(Exception e)
77 {
78 e.printStackTrace();
79 System.out.println(json);
80 }
81
82 }
83 return ret;
84 }
85
86 public static boolean isValidJson(String json)
87 {
88 return json.contains("{")&&json.contains("}");
89 }
90
91 public static String toJson(Object obj)
92 {
93 return toJson(obj,true);
94 }
95
96 public static String toJson(Object obj,boolean htmlEscaping)
97 {
98 return toJson(obj,htmlEscaping,true);
99 }
100
101 public static String toJson(Object obj,boolean htmlEscaping,boolean serializeNulls)
102 {
103 String ret="";
104 GsonBuilder gb=new GsonBuilder();
105 if(serializeNulls)
106 {
107 gb.serializeNulls();
108 }
109 if(!htmlEscaping)
110 {
111 gb.disableHtmlEscaping();
112 }
113 gb.setDateFormat("yyyy-MM-dd HH:mm:ss");
114
115 ret=gb.create().toJson(obj);
116 return ret;
117 }
118
119 // 必须保证内容之外没有空格
120 // public static String getValue(String src,String key)
121 // {
122 // String closed="\"";
123 // return
124 // waf.lang.String.subString(src,key+closed+":"+closed,""+closed+",");
125 // }
126
127 public static String format2(String json)
128 {
129 GsonBuilder gb=new GsonBuilder();
130 gb.setPrettyPrinting();
131 Gson gson=gb.create();
132 return gson.toJson(gson.fromJson(json,Object.class));
133
134 }
135
136 public static void formatPrint(Object obj)
137 {
138 String ret=format2(toJson(obj));
139 System.out.println(ret);
140 }
141
142 public static void printFormat(Object obj)
143 {
144 formatPrint(obj);
145 }
146 public static String format(String json)
147 {
148 return format(json,"");
149 }
150
151 // public static String format(String json,String prefix) {
152 // int level = 0;
153 // StringBuffer jsonForMatStr = new StringBuffer();
154 // for(int i=0;i<json.length();i++){
155 // char c = json.charAt(i);
156 // if(level>0&&'\n'==jsonForMatStr.charAt(jsonForMatStr.length()-1)){
157 // jsonForMatStr.append(getLevelStr(level,prefix));
158 // }
159 // switch (c) {
160 // case '{':
161 // case '[':
162 // jsonForMatStr.append("\n"+getLevelStr(level,prefix)+c+"\n");
163 // level++;
164 // break;
165 // case ',':
166 // jsonForMatStr.append(c+"\n");
167 // break;
168 // case '}':
169 // case ']':
170 // jsonForMatStr.append("\n");
171 // level--;
172 // jsonForMatStr.append(getLevelStr(level,prefix));
173 // jsonForMatStr.append(prefix+c);
174 // break;
175 // default:
176 // jsonForMatStr.append(c);
177 // break;
178 // }
179 // }
180 // int m=0;
181 // String ret=jsonForMatStr.toString();
182 // if(ret.startsWith("\n"))
183 // {
184 // ret=ret.substring(1, ret.length());
185 // }
186 // // if(ret.endsWith("\n"))
187 // // {
188 // // ret=ret.substring(0, ret.length()-1);
189 // // }
190 // return ret.toString();
191 //
192 // }
193
194 public static String format(String json,String prefix)
195 {
196 int level=0;
197 int len=json.length();
198 StringBuffer jsonForMatStr=new StringBuffer();
199 for(int i=0;i<json.length();i++)
200 {
201 char c=json.charAt(i);
202 if(level>0&&'\n'==jsonForMatStr.charAt(jsonForMatStr.length()-1))
203 {
204 jsonForMatStr.append(getLevelStr(level));
205 }
206 switch(c)
207 {
208 case '{':
209 jsonForMatStr.append("\n"+getLevelStr(level)+c);
210 if(i+1<=len-1&&json.charAt(i+1)!='{'&&json.charAt(i+1)!='[')
211 {
212 jsonForMatStr.append("\n");
213 }
214 level++;
215 break;
216 case '[':
217 jsonForMatStr.append("\n"+getLevelStr(level)+c);
218 if(i+1<=len-1&&json.charAt(i+1)!='{'&&json.charAt(i+1)!='[')
219 {
220 jsonForMatStr.append("\n");
221 }
222
223 level++;
224 break;
225 case ',':
226 char c2=json.charAt(i+1);
227 if(c2=='"')
228 {
229 jsonForMatStr.append(c+"\n");
230 }
231 else
232 {
233 jsonForMatStr.append(c);
234 }
235 break;
236 case '}':
237 case ']':
238 jsonForMatStr.append("\n");
239 level--;
240 jsonForMatStr.append(getLevelStr(level));
241 jsonForMatStr.append(c);
242 break;
243 default:
244 jsonForMatStr.append(c);
245 break;
246 }
247 }
248
249 String ret1=jsonForMatStr.toString();
250 if(ret1.endsWith("\n"))
251 {
252 ret1=ret1.substring(0,ret1.length()-1);
253 }
254 if(ret1.startsWith("\n"))
255 {
256 ret1=ret1.substring(1,ret1.length());
257 }
258 String ret2=prefix+ret1.replace("\n","\n"+prefix);
259 ret2=ret2.replace("\n\n","\n");
260 int m=0;
261 return ret2;
262
263 }
264
265 private static String getLevelStr(int level)
266 {
267 StringBuffer levelStr=new StringBuffer();
268 for(int levelI=0;levelI<level;levelI++)
269 {
270 levelStr.append(" ");
271 }
272 return levelStr.toString();
273 }
274
275 public static String getString(String json,String key)
276 {
277 String ret=null;
278 JsonElement rootJsonElement=new JsonParser().parse(json);
279 if(rootJsonElement.isJsonObject())
280 {
281 JsonObject jsonObject=(JsonObject)rootJsonElement.getAsJsonObject();
282 JsonElement jsonElement=jsonObject.get(key);
283 if(jsonElement!=null)
284 {
285 ret=jsonElement.toString();
286 }
287 }
288 return ret;
289 }
290 }
Java Json类
最新推荐文章于 2024-06-12 20:26:30 发布