package com.mandi.common; import java.lang.reflect.Field; import java.sql.Timestamp; import java.text.SimpleDateFormat; import java.util.Date; import org.apache.commons.lang3.StringUtils; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; public class JSONobj { public static JsonObject getJsonObject(JsonObject jo,String n) { if(jo==null||jo.isJsonNull()) return null; JsonElement je=jo.get(n); if(je==null||je.isJsonNull()) return null; JsonObject t=null; try{ t=je.getAsJsonObject(); }catch (Exception e) { } return t; } public static JsonArray getJsonArray(JsonObject jo,String n) { if(jo==null||jo.isJsonNull()) return null; JsonElement je=jo.get(n); if(je==null||je.isJsonNull()) return null; JsonArray t=null; try{ t=je.getAsJsonArray(); }catch (Exception e) { } return t; } public static Long getlong(JsonObject jo,String n) { if(jo==null||jo.isJsonNull()) return 0L; JsonElement je=jo.get(n); if(je==null||je.isJsonNull()) return 0L; long t=0; try{ t=je.getAsLong(); }catch (Exception e) { } return t; } public static Double getdouble(JsonObject jo,String n) { if(jo==null||jo.isJsonNull()) return 0.0; JsonElement je=jo.get(n); if(je==null||je.isJsonNull()) return 0.0; double t=0; try{ t=je.getAsDouble(); }catch (Exception e) { } return t; } public static Date getdate(JsonObject jo,String n) { if(jo==null||jo.isJsonNull()) return null; JsonElement je=jo.get(n); if(je==null||je.isJsonNull()) return null; Date t=null; String tt=JSONobj.getstring(jo, n); if(tt!=null) tt=StringUtils.trimToEmpty(tt); try{ SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); t=sdf.parse(tt); }catch (Exception e) { SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-MM-dd"); try{ t=sdf1.parse(tt); }catch(Exception e1){ } } return t; } public static Integer getint(JsonObject jo,String n) { if(jo==null||jo.isJsonNull()) return null; JsonElement je=jo.get(n); if(je==null||je.isJsonNull()) return null; int t=0; try{ t=je.getAsInt(); }catch (Exception e) { } return t; } public static boolean getbool(JsonObject jo,String n) { if(jo==null||jo.isJsonNull()) return false; JsonElement je=jo.get(n); if(je==null||je.isJsonNull()) return false; boolean t=false; try{ String tt=je.getAsString(); if(tt==null) return false; if(tt!=null) tt=StringUtils.trimToEmpty(tt); if("1".equals(tt)||"true".equals(tt)) { t=true; } }catch (Exception e) { } return t; } public static String getstring(JsonObject jo,String n) { if(jo==null||jo.isJsonNull()) return null; JsonElement je=jo.get(n); if(je==null||je.isJsonNull()) return null; String tt=null; try{ tt=je.getAsString(); if(tt!=null) tt=StringUtils.trimToEmpty(tt); }catch (Exception e) { e.printStackTrace(); System.out.println("get string error:"+n); } return tt; } public static String getstringnonull(JsonObject jo,String n) { if(jo==null||jo.isJsonNull()) return ""; JsonElement je=jo.get(n); if(je==null||je.isJsonNull()) return ""; String tt=""; try{ tt=je.getAsString(); if(tt!=null) tt=StringUtils.trimToEmpty(tt); }catch (Exception e) { } return tt; } /** * timestamp/datetime * @param jo * @param n * @return */ public static String gettmstring(JsonObject jo,String n) { if(jo==null||jo.isJsonNull()) return null; JsonElement je=jo.get(n); if(je==null||je.isJsonNull()) return null; String tt="1970-01-01 08:00:00"; try{ tt=je.getAsString(); if(tt!=null) tt=StringUtils.trimToEmpty(tt); }catch (Exception e) { // System.out.println("get string error:"+n); } return tt; } /** * date * @param jo * @param n * @return */ public static String getdtstring(JsonObject jo,String n) { if(jo==null||jo.isJsonNull()) return null; JsonElement je=jo.get(n); if(je==null||je.isJsonNull()) return null; String tt="1970-01-01"; try{ tt=je.getAsString(); if(tt!=null) tt=StringUtils.trimToEmpty(tt); }catch (Exception e) { // System.out.println("get string error:"+n); } return tt; } public static T getobj(JsonObject jo,T obj) { if(jo==null||jo.isJsonNull()) return null; @SuppressWarnings("rawtypes") Class cls=obj.getClass(); try { Field[] fs=cls.getDeclaredFields(); for (Field field : fs) { field.setAccessible(true); String fn=field.getName(); if(field.getType()==String.class) { String t=JSONobj.getstring(jo, fn); if(t!=null) field.set(obj, t); }else if(field.getType()==Timestamp.class) { Date d=JSONobj.getdate(jo, fn); if(d!=null) { Timestamp tt=new Timestamp(d.getTime()); field.set(obj, tt); } }else if(field.getType()==Date.class) { Date dt=JSONobj.getdate(jo, fn); if(dt!=null) field.set(obj, dt); }else if(field.getType()==int.class||field.getType()==Integer.class) { Integer io=JSONobj.getint(jo, fn); if(io!=null) { int i=io; field.setInt(obj, i); } }else if(field.getType()==double.class||field.getType()==Double.class) { Double d=JSONobj.getdouble(jo, fn); if(d!=null) { double dd=d; field.setDouble(obj, dd); } }else if(field.getType()==long.class||field.getType()==Long.class) { Long l=JSONobj.getlong(jo, fn); if(l!=null) { long ll=l; field.setLong(obj, ll); } }else if(field.getType()==Boolean.class||field.getType()==boolean.class) { Boolean b=JSONobj.getbool(jo, fn); field.setBoolean(obj, b); } } } catch (IllegalAccessException e) { e.printStackTrace(); } return obj; } public static T getobjbyJsonobj(JsonObject jo,T obj) { if(jo==null) return null; @SuppressWarnings("rawtypes") Class cls=obj.getClass(); try { Field[] fs=cls.getDeclaredFields(); for (Field field : fs) { field.setAccessible(true); String fn=field.getName(); if(field.getType()==String.class) { String t=JSONobj.getstring(jo, fn); if(t!=null) field.set(obj, t); }else if(field.getType()==Timestamp.class) { Date d=JSONobj.getdate(jo, fn); if(d!=null) { Timestamp tt=new Timestamp(d.getTime()); field.set(obj, tt); } }else if(field.getType()==Date.class) { Date dt=JSONobj.getdate(jo, fn); if(dt!=null) field.set(obj, dt); }else if(field.getType()==int.class||field.getType()==Integer.class) { Integer io=JSONobj.getint(jo, fn); if(io!=null) { int i=io; field.setInt(obj, i); } }else if(field.getType()==double.class||field.getType()==Double.class) { Double d=JSONobj.getdouble(jo, fn); if(d!=null) { double dd=d; field.setDouble(obj, dd); } }else if(field.getType()==long.class||field.getType()==Long.class) { Long l=JSONobj.getlong(jo, fn); if(l!=null) { long ll=l; field.setLong(obj, ll); } }else if(field.getType()==Boolean.class||field.getType()==boolean.class) { Boolean b=JSONobj.getbool(jo, fn); field.setBoolean(obj, b); } } } catch (IllegalAccessException e) { e.printStackTrace(); } return obj; } }