jsonuntil

packagecom.ces.zwww.utils;

importjava.io.Serializable;

importjava.util.ArrayList;

importjava.util.HashMap;

importjava.util.Iterator;

importjava.util.List;

importjava.util.Map;

importjava.util.Map.Entry;

importjava.util.Set;

importnet.sf.json.JSON;

importnet.sf.json.JSONArray;

importnet.sf.json.JSONObject;

importnet.sf.json.JSONSerializer;

importnet.sf.json.JsonConfig;

/**

*JSON公用方法

*.

*<p>描述:</p>

*<p>Company:上海中信信息发展股份有限公司</p>

*@authorboge(haibo.liu)

*@date2013-2-27上午11:12:37

*@version1.0.2013.

*/

@SuppressWarnings("unchecked")

publicclassJsonUtilimplementsSerializable{

privatestaticfinallongserialVersionUID=1L;

/**

*获取jsonStr中的属性值

*@paramjsonStr

*@paramkey

*@return

*/

publicstaticStringgetAttribute(StringjsonStr,Stringkey){

jsonStr=initJsonStr(jsonStr);

JsonConfigjsonConfig=null;

JSONArrayjsonArray=null;

jsonConfig=newJsonConfig();

jsonConfig.setArrayMode(JsonConfig.MODE_OBJECT_ARRAY);

jsonConfig.setRootClass(String.class);

jsonArray=JSONArray.fromObject(jsonStr,jsonConfig);

if(jsonArray!=null&&jsonArray.getJSONObject(0)!=null){

returnjsonArray.getJSONObject(0).getString(key);

}else{

returnnull;

}

}

/**

*根据json串得到它的属性值空值和null值被忽略

*@paramjsonStr

*@return

*/

publicstaticMapgetAttributesIngoreNull(StringjsonStr){

try{

Map[]maps=getAttributes(jsonStr,null,true);

if(maps!=null&&maps.length>0){

returnmaps[0];

}

}catch(Exceptione){

System.out.println("json串转化失败!"+jsonStr);

}

returnnull;

}

publicstaticMapgetAttributesIngoreNull(StringjsonStr,Mapmap){

Map[]maps=getAttributes(jsonStr,map,true);

if(maps!=null&&maps.length>0){

returnmaps[0];

}else{

returnnull;

}

}

/**

*根据json串得到它的属性值不忽略空值和null

*@paramjsonStr

*@return

*/

publicstaticMapgetAttributes(StringjsonStr){

Map[]maps=getAttributes(jsonStr,null,false);

if(maps!=null&&maps.length>0){

returnmaps[0];

}else{

returnnull;

}

}

publicstaticMapgetAttributes(StringjsonStr,Mapmap){

Map[]maps=getAttributes(jsonStr,map,false);

if(maps!=null&&maps.length>0){

returnmaps[0];

}else{

returnnull;

}

}

/**

*jsonStr对于jsonStr是list或array生成的

*返回数组或List列表

*@paramjsonStr

*@return

*/

publicstaticMap[]getAttributesToMaps(StringjsonStr){

returngetAttributes(jsonStr,null,false);

}

publicstaticMap[]getAttributesToMapsIngoreNull(StringjsonStr){

returngetAttributes(jsonStr,null,true);

}

publicstaticMap[]getAttributesToMaps(StringjsonStr,Mapmap){

returngetAttributes(jsonStr,map,false);

}

publicstaticMap[]getAttributesToMapsIngoreNull(StringjsonStr,Mapmap){

returngetAttributes(jsonStr,map,true);

}

/**

*根据json串得到它的属性值

*@paramjsonStr

*@parammap要取哪些值,及这些在返回的map中以什么key值存放

*key为json串的属性名称

*value为returnmap中的key值,如果value为空(null或""),则key值与json串中的属性名称相同

*@paramingoreNulltrue空值和null值被忽略false不忽略

*@return

*/

privatestaticMap[]getAttributes(StringjsonStr,Mapmap,booleaningoreNull){

Map[]rmap=null;

Iteratoriterator=null;

Entryentry=null;

Stringkey=null;

Stringvalue=null;

StringattValue=null;

JsonConfigjsonConfig=null;

JSONArrayjsonArray=null;

jsonStr=initJsonStr(jsonStr);

if(jsonStr!=null&&!jsonStr.trim().equals("")){

if(!jsonStr.trim().startsWith("[")){

jsonStr=newStringBuffer("[").append(jsonStr).append("]").toString();

}

jsonConfig=newJsonConfig();

jsonConfig.setArrayMode(JsonConfig.MODE_OBJECT_ARRAY);

jsonConfig.setRootClass(String.class);

jsonArray=JSONArray.fromObject(jsonStr,jsonConfig);

if(jsonArray==null||jsonArray.size()==0){

returnnull;

}

rmap=newHashMap[jsonArray.size()];

for(inti=0;i<jsonArray.size();i++){

rmap[i]=newHashMap();

if(map!=null&&map.size()>0){

iterator=map.entrySet().iterator();

while(iterator.hasNext()){

entry=(Entry)iterator.next();

key=(String)entry.getKey();

value=(String)entry.getValue();

attValue=jsonArray.getJSONObject(i).getString(key);

if(ingoreNull){

if(attValue!=null&&!attValue.trim().equals("")&&!attValue.equals("null")&&!attValue.equals("undefined")){

rmap[i].put(value==null||value.trim().equals("")?key:value,attValue.trim());

}

}else{

rmap[i].put(value==null||value.trim().equals("")?key:value,attValue==null?null:attValue.trim());

}

}

}else{

iterator=jsonArray.getJSONObject(i).keySet().iterator();

while(iterator.hasNext()){

key=(String)iterator.next();

attValue=jsonArray.getJSONObject(i).getString(key);

if(ingoreNull){

if(attValue!=null&&!attValue.trim().equals("")&&!attValue.equals("null")&&!attValue.equals("undefined")){

rmap[i].put(key,attValue.trim());

}

}else{

rmap[i].put(key,attValue==null?null:attValue.trim());

}

}

}

}

}

returnrmap;

}

/**

*将String数组转成json串

*@paramarray

*@return

*/

publicstaticStringstringArrayToJsonStr(String[]array){

if(array==null||array.length==0){

returnnull;

}

JSONArrayjsonArray=newJSONArray();

for(inti=0;i<array.length;i++){

if(array[i].startsWith("'")&&array[i].endsWith("'")){

array[i]="\'''"+array[i].substring(1,array[i].length()-1)+"\'''";

}elseif(array[i].startsWith("\"")&&array[i].endsWith("\"")){

array[i]="\''\""+array[i].substring(1,array[i].length()-1)+"\"\''";

}

jsonArray.add(array[i]);

}

returnjsonArray.toString();

}

/**

*将json串转成String数组

*@paramjsonStr

*@return

*/

publicstaticString[]jsonStrToStringArray(StringjsonStr){

if(jsonStr==null||jsonStr.trim().equals("")){

returnnull;

}

JsonConfigjsonConfig=newJsonConfig();

jsonConfig.setArrayMode(JsonConfig.MODE_OBJECT_ARRAY);

jsonConfig.setRootClass(String.class);

JSONjson=JSONSerializer.toJSON(jsonStr,jsonConfig);

return(String[])JSONSerializer.toJava(json,jsonConfig);

}

/**

*json串转成对象

*@paramjsonStr

*@paramc

*@return

*/

publicstaticObjectjsonStrToObject(StringjsonStr,Classc){

if(jsonStr==null||jsonStr.trim().equals("")){

returnnull;

}

Listlist=jsonStrToList(jsonStr,c);

if(list==null||list.size()==0){

returnnull;

}else{

returnlist.get(0);

}

}

/**

*json串转成List列表

*@paramjsonStr

*@paramc

*@return

*/

publicstaticListjsonStrToList(StringjsonStr,Classc){

if(jsonStr==null||jsonStr.trim().equals("")){

returnnull;

}

jsonStr=initJsonStr(jsonStr);

JsonConfigjsonConfig=newJsonConfig();

jsonConfig.setArrayMode(JsonConfig.MODE_LIST);

jsonConfig.setRootClass(c);

JSONjson=JSONSerializer.toJSON(jsonStr,jsonConfig);

return(List)JSONSerializer.toJava(json,jsonConfig);

}

/////排除json中字段解析成实体

/**

*json串转成List列表

*@paramjsonStr

*@paramc

*@return

*/

publicstaticListjsonStrToListExcute(StringjsonStr,Classc){

if(jsonStr==null||jsonStr.trim().equals("")){

returnnull;

}

jsonStr=initJsonStr(jsonStr);

JsonConfigjsonConfig=newJsonConfig();

jsonConfig.setArrayMode(JsonConfig.MODE_LIST);

jsonConfig.setExcludes(newString[]{"id"});

jsonConfig.setRootClass(c);

JSONjson=JSONSerializer.toJSON(jsonStr,jsonConfig);

return(List)JSONSerializer.toJava(json,jsonConfig);

}

/**

*json串转成Object数组

*@paramjsonStr

*@paramc

*/

publicstaticObject[]jsonStrToArray(StringjsonStr,Classc){

if(jsonStr==null||jsonStr.trim().equals("")){

returnnull;

}

jsonStr=initJsonStr(jsonStr);

JsonConfigjsonConfig=newJsonConfig();

jsonConfig.setArrayMode(JsonConfig.MODE_OBJECT_ARRAY);

jsonConfig.setRootClass(c);

JSONjson=JSONSerializer.toJSON(jsonStr,jsonConfig);

return(Object[])JSONSerializer.toJava(json,jsonConfig);

}

/**

*对象转换成jsonStr

*@paramobject

*@return

*/

publicstaticStringobjectToJsonStr(Objectobject){

if(object==null

||(objectinstanceofList&&((List)object).size()==0)

||(objectinstanceofMap&&((Map)object).size()==0)

||(objectinstanceofSet&&((Set)object).size()==0)

){

returnnull;

}

JSONArrayjsonArray=JSONArray.fromObject(object);

returnjsonArray.toString();

}

publicstaticJSONArrayjsonStrToJSONArray(StringjsonStr){

if(jsonStr==null||jsonStr.trim().equals("")){

returnnull;

}

jsonStr=initJsonStr(jsonStr);

JsonConfigjsonConfig=newJsonConfig();

jsonConfig.setArrayMode(JsonConfig.MODE_LIST);

jsonConfig.setRootClass(String.class);

returnJSONArray.fromObject(jsonStr,jsonConfig);

}

publicstaticStringaddAttribute(StringjsonStr,StringattributeKey,ObjectattributeValue){

JSONArrayjsonArray=jsonStrToJSONArray(jsonStr);

JSONObjectjo=null;

if(jsonArray==null||jsonArray.size()==0){

jo=newJSONObject();

jo.put(attributeKey,attributeValue);

returnnewStringBuffer("[").append(jo.toString()).append("]").toString();

}else{

for(inti=0;i<jsonArray.size();i++){

jo=(JSONObject)jsonArray.getJSONObject(i);

jo.put(attributeKey,attributeValue);

jsonArray.set(i,jo);

}

returnjsonArray.toString();

}

}

publicstaticStringremoveAttribute(StringjsonStr,StringattributeKey){

JSONArrayjsonArray=jsonStrToJSONArray(jsonStr);

JSONObjectjo=null;

if(jsonArray==null||jsonArray.size()==0){

returnnull;

}else{

for(inti=0;i<jsonArray.size();i++){

jo=(JSONObject)jsonArray.getJSONObject(i);

jo.remove(attributeKey);

jsonArray.set(i,jo);

}

returnjsonArray.toString();

}

}

publicstaticStringreplaceAttribute(StringjsonStr,StringattributeKey,ObjectattributeValue){

JSONArrayjsonArray=jsonStrToJSONArray(jsonStr);

JSONObjectjo=null;

if(jsonArray==null||jsonArray.size()==0){

returnnull;

}else{

for(inti=0;i<jsonArray.size();i++){

jo=(JSONObject)jsonArray.getJSONObject(i);

if(jo.containsKey(attributeKey)){

jo.remove(attributeKey);

jo.put(attributeKey,attributeValue);

}

jsonArray.set(i,jo);

}

returnjsonArray.toString();

}

}

privatestaticStringinitJsonStr(StringjsonStr){

if(jsonStr==null||jsonStr.trim().equals("")){

returnnull;

}

//jsonStr=jsonStr.replaceAll("\r\n","\\\\r\\\\n");//.replaceAll("\r","\\r").replaceAll("\n","\\n");

jsonStr=jsonStr.replaceAll("\r","\\\\r").replaceAll("\n","\\\\n");//.replaceAll("\r","\\r").replaceAll("\n","\\n");

returnjsonStr;

}

publicstaticMap<String,Object>parseJSON2Map(StringjsonStr){

Map<String,Object>map=newHashMap<String,Object>();

//最外层解析

JSONObjectjson=JSONObject.fromObject(jsonStr);

for(Objectk:json.keySet()){

Objectv=json.get(k);

//如果内层还是数组的话,继续解析

if(vinstanceofJSONArray){

List<Map<String,Object>>list=newArrayList<Map<String,Object>>();

Iterator<JSONObject>it=((JSONArray)v).iterator();

while(it.hasNext()){

JSONObjectjson2=it.next();

list.add(parseJSON2Map(json2.toString()));

}

map.put(k.toString(),list);

}else{

map.put(k.toString(),v);

}

}

returnmap;

}

}

相关推荐