zoukankan      html  css  js  c++  java
  • 【转】一个java处理JSON格式数据的通用类

    代码
    一个java处理JSON格式数据的通用类

    进入需要在项目中用java处理json格式的数据,因此封装了一个class,现将这个class共享出来和大家分享

    /**
    * Copyright (c) linkwise 2007-2009 corporation.
    * All rights reserved
    */

    package com.linghui.common.util;


    import java.util.ArrayList;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;

    import net.sf.json.JSONArray;
    import net.sf.json.JSONObject;
    import net.sf.json.JsonConfig;
    import net.sf.json.util.CycleDetectionStrategy;

    import com.linghui.common.util.DateUtil;
    import com.linghui.common.util.jsonutil.DateJsonValueProcessor;

    /**
    @author robert.feng
    *
    */
    public class JsonUtil {

    /**
    * 从一个JSON 对象字符格式中得到一个java对象
    @param jsonString
    @param pojoCalss
    @return
    */
    public static Object getObject4JsonString(String jsonString,Class pojoCalss){
        Object pojo;
        JSONObject jsonObject 
    = JSONObject.fromObject( jsonString );
        pojo 
    = JSONObject.toBean(jsonObject,pojoCalss);
        
    return pojo;
    }

    /**
    * 从json HASH表达式中获取一个map,改map支持嵌套功能
    @param jsonString
    @return
    */
    public static Map getMap4Json(String jsonString){
        JSONObject jsonObject 
    = JSONObject.fromObject( jsonString );
        Iterator keyIter 
    = jsonObject.keys();
        String key;
        Object value;
        Map valueMap 
    = new HashMap();
        
    while( keyIter.hasNext())
        {
            key 
    = (String)keyIter.next();
            value 
    = jsonObject.get(key);
            valueMap.put(key, value);
        }
        
    return valueMap;
    }

    /**
    * 从json数组中得到相应java数组
    @param jsonString
    @return
    */
    public static Object[] getObjectArray4Json(String jsonString){
        JSONArray jsonArray 
    = JSONArray.fromObject(jsonString);
        
    return jsonArray.toArray();
    }

    /**
    * 从json对象集合表达式中得到一个java对象列表
    @param jsonString
    @param pojoClass
    @return
    */
    public static List getList4Json(String jsonString, Class pojoClass){
        JSONArray jsonArray 
    = JSONArray.fromObject(jsonString);
        JSONObject jsonObject;
        Object pojoValue;
        List list 
    = new ArrayList();
        
    for ( int i = 0 ; i<jsonArray.size(); i++){
            jsonObject 
    = jsonArray.getJSONObject(i);
            pojoValue 
    = JSONObject.toBean(jsonObject,pojoClass);
            list.add(pojoValue);
        }
        
    return list;
    }

    /**
    * 从json数组中解析出java字符串数组
    @param jsonString
    @return
    */
    public static String[] getStringArray4Json(String jsonString){
        JSONArray jsonArray 
    = JSONArray.fromObject(jsonString);
        String[] stringArray 
    = new String[jsonArray.size()];
        
    forint i = 0 ; i<jsonArray.size() ; i++ ){
            stringArray[i] 
    = jsonArray.getString(i);
        }
        
    return stringArray;
    }

    /**
    * 从json数组中解析出javaLong型对象数组
    @param jsonString
    @return
    */
    public static Long[] getLongArray4Json(String jsonString){
        JSONArray jsonArray 
    = JSONArray.fromObject(jsonString);
        Long[] longArray 
    = new Long[jsonArray.size()];
        
    forint i = 0 ; i<jsonArray.size() ; i++ ){
            longArray[i] 
    = jsonArray.getLong(i);
        }
        
    return longArray;
    }


    /**
    * 从json数组中解析出java Integer型对象数组
    @param jsonString
    @return
    */
    public static Integer[] getIntegerArray4Json(String jsonString){
        JSONArray jsonArray 
    = JSONArray.fromObject(jsonString);
        Integer[] integerArray 
    = new Integer[jsonArray.size()];
        
    forint i = 0 ; i<jsonArray.size() ; i++ ){
            integerArray[i] 
    = jsonArray.getInt(i);
        }
        
    return integerArray;
    }


    /**
    * 从json数组中解析出java Date 型对象数组,使用本方法必须保证
    @param jsonString
    @return
    */
    public static Date[] getDateArray4Json(String jsonString,String DataFormat){
        JSONArray jsonArray 
    = JSONArray.fromObject(jsonString);
        Date[] dateArray 
    = new Date[jsonArray.size()];
        String dateString;
        Date date;
        
    forint i = 0 ; i<jsonArray.size() ; i++ ){
            dateString 
    = jsonArray.getString(i);
            date 
    = DateUtil.stringToDate(dateString, DataFormat);
            dateArray[i] 
    = date;
        }
        
    return dateArray;
    }


    /**
    * 从json数组中解析出java Integer型对象数组
    @param jsonString
    @return
    */
    public static Double[] getDoubleArray4Json(String jsonString){
        JSONArray jsonArray 
    = JSONArray.fromObject(jsonString);
        Double[] doubleArray 
    = new Double[jsonArray.size()];
        
    forint i = 0 ; i<jsonArray.size() ; i++ ){
            doubleArray[i] 
    = jsonArray.getDouble(i);
        }
        
    return doubleArray;
    }

    /**
    * 将java对象转换成json字符串
    @param javaObj
    @return
    */
    public static String getJsonString4JavaPOJO(Object javaObj){
        JSONObject json;
        json 
    = JSONObject.fromObject(javaObj);
        
    return json.toString();
    }


    /**
    * 将java对象转换成json字符串,并设定日期格式
    @param javaObj
    @param dataFormat
    @return
    */
    public static String getJsonString4JavaPOJO(Object javaObj , String dataFormat){
        JSONObject json;
        JsonConfig jsonConfig 
    = configJson(dataFormat);
        json 
    = JSONObject.fromObject(javaObj,jsonConfig);
        
    return json.toString();
    }

    /**
    @param args
    */
    public static void main(String[] args) {
        
    // TODO 自动生成方法存根
    }

    /**
    * JSON 时间解析器具
    @param datePattern
    @return
    */
    public static JsonConfig configJson(String datePattern) {
        JsonConfig jsonConfig 
    = new JsonConfig();
        jsonConfig.setExcludes(
    new String[]{""});
        jsonConfig.setIgnoreDefaultExcludes(
    false);
        jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
        jsonConfig.registerJsonValueProcessor(Date.
    classnew DateJsonValueProcessor(datePattern)); 
        
    return jsonConfig;
    }


    /**
    @param excludes
    @param datePattern
    @return
    */
    public static JsonConfig configJson(String[] excludes, String datePattern) {
            JsonConfig jsonConfig 
    = new JsonConfig();
            jsonConfig.setExcludes(excludes);
            jsonConfig.setIgnoreDefaultExcludes(
    false);
            jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
            jsonConfig.registerJsonValueProcessor(Date.
    classnew DateJsonValueProcessor(datePattern)); 
            
    return jsonConfig;
        }

    }


    /**
    * linkwise
    */

    package com.linghui.common.util.jsonutil;

    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import net.sf.json.JsonConfig;
    import net.sf.json.processors.JsonValueProcessor;

    /**
    @author robert.feng
    *
    */

    public class DateJsonValueProcessor implements JsonValueProcessor {

        
    public static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd";
        
    private DateFormat dateFormat;

        
    /**
        * 构造方法.
        * 
    @param datePattern 日期格式
        
    */
        
    public DateJsonValueProcessor(String datePattern) { 
            
    ifnull == datePattern )
                dateFormat 
    = new SimpleDateFormat(DEFAULT_DATE_PATTERN);
            
    else
                dateFormat 
    = new SimpleDateFormat(datePattern);
        }

        
    /* (非 Javadoc)
        * @see net.sf.json.processors.JsonValueProcessor#processArrayValue(java.lang.Object, net.sf.json.JsonConfig)
        
    */
        
    public Object processArrayValue(Object arg0, JsonConfig arg1) {
            
    // TODO 自动生成方法存根
            return process(arg0);
        }

        
    /* (非 Javadoc)
        * @see net.sf.json.processors.JsonValueProcessor#processObjectValue(java.lang.String, java.lang.Object, net.sf.json.JsonConfig)
        
    */
        
    public Object processObjectValue(String arg0, Object arg1, JsonConfig arg2) {
            
    // TODO 自动生成方法存根
            return process(arg1);
        }

        
    private Object process(Object value) {
            
    return dateFormat.format((Date) value);
        } 

    }
  • 相关阅读:
    如何把.cs文件编译成DLL文件
    单元测试的性能测试库
    MVC5在Mono上的各种坑
    基于Selenium的自动化测试 C#版(1)
    关于最近的CSRF攻击
    ILspy反编译工具
    关于公司内部的Nuget服务
    log4net入门
    java 多线程以及线程池
    Arraylist 和 linkedlist || hashset 和treeset. || hashMap 和 TreeMap
  • 原文地址:https://www.cnblogs.com/ding0910/p/1654816.html
Copyright © 2011-2022 走看看