Java Json类

  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&timestamp=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 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值