`
y806839048
  • 浏览: 1130619 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

jsonuntil

    博客分类:
  • json
阅读更多
package com.ces.zwww.utils;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import net.sf.json.JSON;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JSONSerializer;
import net.sf.json.JsonConfig;
/**
* JSON公用方法
* .
* <p>描述:</p>
* <p>Company:上海中信信息发展股份有限公司</p>
* @author boge(haibo.liu)
* @date 2013-2-27  上午11:12:37
* @version 1.0.2013.
*/
@SuppressWarnings("unchecked")
public class JsonUtil  implements Serializable{

private static final long serialVersionUID = 1L;

/**
* 获取jsonStr中的属性值
* @param jsonStr
* @param key
* @return
*/
public static String getAttribute(String jsonStr,String key){
jsonStr=initJsonStr(jsonStr);
JsonConfig jsonConfig =null;
JSONArray jsonArray=null;
jsonConfig = new JsonConfig();
jsonConfig.setArrayMode( JsonConfig.MODE_OBJECT_ARRAY );
jsonConfig.setRootClass(String.class);
    jsonArray=JSONArray.fromObject(jsonStr, jsonConfig);
    if(jsonArray!=null&&jsonArray.getJSONObject(0)!=null){
      return jsonArray.getJSONObject(0).getString(key);
    }else{
      return null;
    }
}


/**
*  根据json串得到它的属性值    空值和null值被忽略
* @param jsonStr
* @return
*/
public static Map getAttributesIngoreNull(String jsonStr){
try{
Map[] maps = getAttributes(jsonStr,null,true);
if(maps!=null&&maps.length>0){
return maps[0];
}
}catch (Exception e) {
System.out.println("json串转化失败!"+jsonStr);
}
return null;
}
public static Map getAttributesIngoreNull(String jsonStr,Map map){
Map[] maps = getAttributes(jsonStr,map,true);
if(maps!=null&&maps.length>0){
return maps[0];
}else{
return null;
}
}

/**
*  根据json串得到它的属性值  不忽略空值和null
* @param jsonStr
* @return
*/
public static Map getAttributes(String jsonStr){

Map[] maps =getAttributes(jsonStr,null,false);
if(maps!=null&&maps.length>0){
return maps[0];
}else{
return null;
}
}

public static Map getAttributes(String jsonStr,Map map){
Map[] maps=getAttributes(jsonStr,map,false);
if(maps!=null&&maps.length>0){
return maps[0];
}else{
return null;
}
}


/**
* jsonStr  对于jsonStr是list 或 array  生成的
* 返回数组或List列表
* @param jsonStr
* @return
*/

public static Map[] getAttributesToMaps(String jsonStr){
return getAttributes(jsonStr, null, false);
}
public static Map[] getAttributesToMapsIngoreNull(String jsonStr){
return getAttributes(jsonStr, null, true);
}
public static Map[] getAttributesToMaps(String jsonStr,Map map){
return getAttributes(jsonStr,map, false);
}
public static Map[] getAttributesToMapsIngoreNull(String jsonStr,Map map){
return getAttributes(jsonStr, map, true);
}



/**
* 根据json串得到它的属性值  
* @param jsonStr
* @param map 要取哪些值,及这些在返回的map中以什么key值存放
*        key  为json串的属性名称
*        value 为return map中的key值,如果value为空(null 或 ""),则key值与json串中的属性名称相同
* @param ingoreNull   true 空值和null值被忽略   false 不忽略
* @return
*/
private static Map[] getAttributes(String jsonStr,Map map,boolean ingoreNull){

Map[] rmap=null;

Iterator iterator=null;
Entry entry=null;
String key=null;
String value=null;
String attValue=null;
JsonConfig jsonConfig =null;
JSONArray jsonArray=null;
 
jsonStr=initJsonStr(jsonStr);
if(jsonStr!=null&&!jsonStr.trim().equals("")){

if(!jsonStr.trim().startsWith("[")){
jsonStr=new StringBuffer("[").append(jsonStr).append("]").toString();
}

jsonConfig = new JsonConfig();
jsonConfig.setArrayMode( JsonConfig.MODE_OBJECT_ARRAY );
jsonConfig.setRootClass(String.class);
    jsonArray=JSONArray.fromObject(jsonStr, jsonConfig);
    if(jsonArray==null||jsonArray.size()==0){
    return null;
    }
    rmap=new HashMap[jsonArray.size()];
    for(int i=0;i<jsonArray.size();i++){
    rmap[i]=new HashMap();
    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());
    }
    }
    }
    }
}
return rmap;
}


/**
* 将String数组转成json串
* @param array
* @return
*/
public static String stringArrayToJsonStr(String[] array){
if(array==null||array.length==0){
return null;
}
JSONArray jsonArray =new JSONArray();
for(int i=0;i<array.length;i++){
if(array[i].startsWith("'")&&array[i].endsWith("'")){
array[i]="\'''"+array[i].substring(1,array[i].length()-1)+"\'''";
}else if(array[i].startsWith("\"")&&array[i].endsWith("\"")){
array[i]="\''\""+array[i].substring(1,array[i].length()-1)+"\"\''";
}
jsonArray.add(array[i]);
}
return jsonArray.toString();
}

/**
* 将json串转成String数组
* @param jsonStr
* @return
*/
public static String[] jsonStrToStringArray(String jsonStr){
if(jsonStr==null||jsonStr.trim().equals("")){
return null;
}

JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setArrayMode( JsonConfig.MODE_OBJECT_ARRAY);
jsonConfig.setRootClass(String.class);
 
JSON json=JSONSerializer.toJSON(jsonStr, jsonConfig);
    return (String[])JSONSerializer.toJava(json, jsonConfig);
}

/**
* json串转成对象
* @param jsonStr
* @param c
* @return
*/
public static Object jsonStrToObject(String jsonStr,Class c){
if(jsonStr==null||jsonStr.trim().equals("")){
return null;
}
List list=jsonStrToList(jsonStr,c);
        if(list==null||list.size()==0){
        return null;
        }else{
        return list.get(0);
        }
}

/**
* json串转成List列表
* @param jsonStr
* @param c
* @return
*/
public static List jsonStrToList(String jsonStr,Class c){
if(jsonStr==null||jsonStr.trim().equals("")){
return null;
}
jsonStr=initJsonStr(jsonStr);
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setArrayMode( JsonConfig.MODE_LIST);
jsonConfig.setRootClass(c); 
JSON json=JSONSerializer.toJSON(jsonStr, jsonConfig);
    return (List)JSONSerializer.toJava(json, jsonConfig);
}


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

/**
* json串转成List列表
* @param jsonStr
* @param c
* @return
*/
public static List jsonStrToListExcute(String jsonStr,Class c){
if(jsonStr==null||jsonStr.trim().equals("")){
return null;
}
jsonStr=initJsonStr(jsonStr);
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setArrayMode( JsonConfig.MODE_LIST);
jsonConfig.setExcludes(new String[]{"id"});
jsonConfig.setRootClass(c); 
JSON json=JSONSerializer.toJSON(jsonStr, jsonConfig);
    return (List)JSONSerializer.toJava(json, jsonConfig);
}

/**
* json串转成Object数组
* @param jsonStr
* @param c
*/

public static Object[] jsonStrToArray(String jsonStr,Class c){
if(jsonStr==null||jsonStr.trim().equals("")){
return null;
}
jsonStr=initJsonStr(jsonStr);
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setArrayMode( JsonConfig.MODE_OBJECT_ARRAY);
jsonConfig.setRootClass(c); 
JSON json=JSONSerializer.toJSON(jsonStr, jsonConfig);
    return (Object[])JSONSerializer.toJava(json, jsonConfig);
}

/**
* 对象转换成jsonStr
* @param object 
* @return
*/
public static String objectToJsonStr(Object object){
if(   object==null
    ||(object instanceof List && ((List)object).size()==0)
    ||(object instanceof Map  && ((Map)object).size()==0)
    ||(object instanceof Set  && ((Set)object).size()==0)
   ){
return null;
}
JSONArray jsonArray = JSONArray.fromObject(object);
return jsonArray.toString();
}


public static JSONArray jsonStrToJSONArray(String jsonStr){
if(jsonStr==null||jsonStr.trim().equals("")){
return null;
}
jsonStr=initJsonStr(jsonStr);
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setArrayMode( JsonConfig.MODE_LIST );
jsonConfig.setRootClass(String.class);
    return JSONArray.fromObject(jsonStr, jsonConfig);
}

public static String addAttribute(String jsonStr,String attributeKey,Object attributeValue){

JSONArray jsonArray=jsonStrToJSONArray(jsonStr);
JSONObject jo=null;
if(jsonArray==null||jsonArray.size()==0){
jo=new JSONObject();
jo.put(attributeKey, attributeValue);
return new StringBuffer("[").append(jo.toString()).append("]").toString();
}else{
for(int i=0;i<jsonArray.size();i++){
          jo=(JSONObject)jsonArray.getJSONObject(i);
          jo.put(attributeKey, attributeValue);
              jsonArray.set(i, jo);          
        }
return jsonArray.toString();
}

public static String removeAttribute(String jsonStr,String attributeKey){
JSONArray jsonArray=jsonStrToJSONArray(jsonStr);
JSONObject jo=null;
if(jsonArray==null||jsonArray.size()==0){
return null;
}else{
for(int i=0;i<jsonArray.size();i++){
          jo=(JSONObject)jsonArray.getJSONObject(i);
          jo.remove(attributeKey);
              jsonArray.set(i, jo);          
        }
return jsonArray.toString();
}
}
public static String replaceAttribute(String jsonStr,String attributeKey,Object attributeValue){

JSONArray jsonArray=jsonStrToJSONArray(jsonStr);
JSONObject jo=null;
if(jsonArray==null||jsonArray.size()==0){
return null;
}else{
for(int i=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);          
        }
return jsonArray.toString();
}

}

private static String initJsonStr(String jsonStr){

if(jsonStr==null||jsonStr.trim().equals("")){
return null;
}
//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");
return jsonStr;
}

public static Map<String, Object> parseJSON2Map(String jsonStr){ 
      Map<String, Object> map = new HashMap<String, Object>(); 
        //最外层解析 
        JSONObject json = JSONObject.fromObject(jsonStr); 
        for(Object k : json.keySet()){ 
            Object v = json.get(k);  
            //如果内层还是数组的话,继续解析 
             if(v instanceof JSONArray){ 
                 List<Map<String, Object>> list = new ArrayList<Map<String,Object>>(); 
                Iterator<JSONObject> it = ((JSONArray)v).iterator(); 
               while(it.hasNext()){ 
                     JSONObject json2 = it.next(); 
                    list.add(parseJSON2Map(json2.toString())); 
               } 
                 map.put(k.toString(), list); 
            } else { 
                 map.put(k.toString(), v); 
            } 
        } 
         return map; 
     } 


}
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    基于改进YOLOv5s的森林烟火检测算法.pdf

    基于改进YOLOv5s的森林烟火检测算法.pdf

    人力资源管理工具绩效考核excel模板01.xlsx

    人力资源管理工具绩效考核excel模板01

    施工班组长绩效考核表.xls

    施工班组长绩效考核表

    57 -营业部经理绩效考核表1.xlsx

    57 -营业部经理绩效考核表1

    XX公司行政部绩效考核指标.xls

    XX公司行政部绩效考核指标

    ant-apache-xalan2-1.9.4-2.el7.x64-86.rpm.tar.gz

    1、文件内容:ant-apache-xalan2-1.9.4-2.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/ant-apache-xalan2-1.9.4-2.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

    部门绩效考核表模板(基于KPI以月度为例2).xlsx

    部门绩效考核表模板(基于KPI以月度为例2)

    11-6-质检员绩效考核表(含自动计算、等级评价及任意设置等级).xlsx

    11-6-质检员绩效考核表(含自动计算、等级评价及任意设置等级)

    2024年最新全国河流、湖泊矢量数据(数据权威)

    2024最新全国河流湖泊矢量数据 【数据介绍】 2024年中国河流湖泊数据 一份包含中国境内所有主要河流和湖泊的地理信息数据。 数据格式:Shapefile:广泛使用的GIS数据格式,方便在各类GIS软件中使用。 数据获取:访问OpenStreetMap官网,通过导出工具选择中国区域并下载所需的数据。 使用Geofabrik等第三方网站,可以下载预处理好的中国区域的OSM数据。 数据使用:GIS软件:如QGIS、ArcGIS等,用户可以在这些软件中导入OSM数据进行可视化、分析和编辑。 数据应用: 环境研究:分析河流湖泊的水质变化,研究水资源分布及其环境影响。 城市规划:用于规划城市水系、洪水防控、水资源管理等。 导航和旅游:为河流湖泊的导航和旅游路线规划提供数据支持。 科研:为水文地理研究、生态保护、气候变化等领域提供基础数据。 数据特点: 实时更新:OSM数据由全球用户贡献,具有较高的实时性和更新频率。 开放性:所有数据都在开放许可下发布,允许用户自由使用、修改和分发。 详细性:由于全球志愿者的不断努力,数据细节较为丰富,涵盖了从主要河流湖泊到小型水体的广泛范围。 数据时间2024年5月,shp格式,数据来源OpenStreetMap。 OpenStreetMap(OSM)介绍: 一个开放的、免费的、全球性的地图项目,由全球的志愿者和地图爱好者们共同创建和维护。 OSM的数据包括道路、建筑、公园、河流、湖泊等各类地理信息。由于是由众多志愿者共同编辑,OSM的数据具有很高的实时性和详细程度,特别是在一些活跃的区域,地图数据的更新速度和精度往往超过商业地图服务。 用户可以直接在OSM官网下载地图数据,数据格式主要有OSM XML和PBF等。此外,还有一些第三方网站和工具提供更加便捷的数据下载和处理服务,如Geofabrik、Overpass API等。 OSM的数据可以在各种GIS软件中使用,如QGIS、ArcGIS等。此外,还可以使用Python的OSMnx、GeoPandas等库进行编程处理,或者通过Leaflet、Mapbox等JavaScript库将OSM数据集成到web地图应用中。 OSM的所有数据都在开放许可下发布,允许用户自由使用、修改和分发。这使得OSM成为了许多公共项目、研究机构和商业公司的重要数据来源。

    部门绩效考核评分表.xlsx

    部门绩效考核评分表

    12-11-运输车队长绩效考核表(含自动计算、等级评价).xlsx

    12-11-运输车队长绩效考核表(含自动计算、等级评价)

    ant-javadoc-1.9.4-2.el7.x64-86.rpm.tar.gz

    1、文件内容:ant-javadoc-1.9.4-2.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/ant-javadoc-1.9.4-2.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

    springboot整合 freemarker方法

    springboot整合 freemarker方法

    apache-commons-codec-1.8-7.el7.x64-86.rpm.tar.gz

    1、文件内容:apache-commons-codec-1.8-7.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/apache-commons-codec-1.8-7.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

    (数据权威)全国旅游抽样调查数据

    《旅游抽样调查资料》是反映入境游客在华(内地)花费和国内居民国内旅游情况的资料性年刊,分为上下两篇。 上篇为在华(内地)停留时间在3个月以内的入境游客抽样调查资料,由综合分析报告和调查分类数据两部分组成,分类数据包括:入境游客的主要特征,入境外国人、港澳台同胞的花费水平和花费构成、在境内的停留时间以及入境次数、流向和对住宿单位的选择等。 下篇为国内旅游抽样调查资料,汇集了对城镇居民和农村居民的国内旅游抽样调查结果,共分为四个部分:第一部分为综合分析报告;第二部分为国内旅游出游及花费情况;第三部分为城镇居民国内旅游抽样调查分类数据;第四部分为农村居民国内旅游抽样调查分类数据。

    二代身份证信息读取(vfp8.0)

    1、表单界面,身份证信息保存在dbf表中,供vfp应用使用,可导出为xls电子表格。 2、提供了身份证过期校验和查询功能。

    人事行政主管绩效考核评分表.xls

    人事行政主管绩效考核评分表

    08 -大堂副理绩效考核表1.xlsx

    08 -大堂副理绩效考核表1

    apr-1.4.8-7.el7.x64-86.rpm.tar.gz

    1、文件内容:apr-1.4.8-7.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/apr-1.4.8-7.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装

    ComponentNameError解决办法.md

    ComponentNameError解决办法.md

Global site tag (gtag.js) - Google Analytics