FastJsonUtil

package com.chehaha.common.util.json.impl;

import java.io.IOException;
import java.io.StringWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;

import com.alipay.api.response.AlipayFundTransToaccountTransferResponse;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;

import com.fasterxml.jackson.databind.DeserializationFeature;
import org.apache.poi.ss.formula.functions.T;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.fasterxml.jackson.core.JsonGenerationException;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.type.TypeFactory;
import com.chehaha.common.util.json.JsonSerializer;
import org.springframework.cglib.beans.BeanMap;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;

public class FastjsonUtil implements JsonSerializer {
    private static final Logger logger = LoggerFactory.getLogger(FastjsonUtil.class);

    private static ObjectMapper objectMapper = new ObjectMapper();

    public static String parse(Object object) {
        Writer write = new StringWriter();
        try {
            objectMapper.writeValue(write, object);
        } catch (JsonGenerationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (JsonMappingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return write.toString();
    }

//    public static String parse(Object object, String... propertyArray) {
//        Writer write = new StringWriter();
//        FilterProvider filterProvider = new SimpleFilterProvider().addFilter("myFilter",
//                SimpleBeanPropertyFilter.serializeAllExcept(propertyArray));
//        objectMapper.setFilters(filterProvider);
//        try {
//            objectMapper.writeValue(write, object);
//        } catch (JsonProcessingException e) {
//            e.printStackTrace();
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//        return write.toString();
//    }

    public static <T> T toObject(String json, TypeReference<?> type) {
        T object = null;
        try {
            object = (T) objectMapper.readValue(json, type);
        } catch (JsonParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (JsonMappingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return object;
    }

//    public static void main(String[] args) {
//        String s="{\"code\":\"10000\",\"msg\":\"Success\",\"subCode\":null,\"subMsg\":null,\"body\":\"{\\\"alipay_fund_trans_toaccount_transfer_response\\\":{\\\"code\\\":\\\"10000\\\",\\\"msg\\\":\\\"Success\\\",\\\"order_id\\\":\\\"20180317110070001502200073679982\\\",\\\"out_biz_no\\\":\\\"ONA01000000061521269776\\\",\\\"pay_date\\\":\\\"2018-03-17 14:59:17\\\"},\\\"sign\\\":\\\"Iqh15Kbtb9WC4XNQxZcAi29vOz/xUdD+tPdCy9Ejd6SAVTksmaEhSAgUw/P0T8MhkNh8Fq5shI18qRiw5P2MSQr0d6y+mUWvqNFh9ZpvDxs+GTFYAv42vdY6xyQeDJxD3t/f44gGF0oWf/KeY65Peo83Qtbq+5d5SMKjfrh6fbM0i2uPE2NNEH7tPJDyVYgIedppvwRejA+T4W+BeGJ0qBi6HwhsXjdHSXuJS7TX+aSG5Reo9BqY/nnbG/ILxDR+9L+Uf7Qf6WSQr1qTknSWcc86nW7MGGCSK3BSCevKY3sANfdjrB6xWpzWmiBwSmyJYipbGDv7ULRNaetTQwL1gw==\\\"}\",\"params\":{\"biz_content\":\"{\\\"amount\\\":\\\"0.46\\\",\\\"out_biz_no\\\":\\\"ONA01000000061521269776\\\",\\\"payee_account\\\":\\\"2088012900399724\\\",\\\"payee_type\\\":\\\"ALIPAY_USERID\\\",\\\"payer_show_name\\\":\\\"杞﹀搱鍝堢鎶�鑲′唤鏈夐檺鍏徃\\\",\\\"remark\\\":\\\"璁㈠崟:NA01000000061521269776鍒濇缁撶畻瀹屾垚\\\"}\"},\"orderId\":\"20180317110070001502200073679982\",\"outBizNo\":\"ONA01000000061521269776\",\"payDate\":\"2018-03-17 14:59:17\",\"errorCode\":\"10000\",\"success\":true}";
//        AlipayFundTransToaccountTransferResponse alipayFundTransToaccountTransferResponse = irregularJsonToObject(s, AlipayFundTransToaccountTransferResponse.class);
//        System.out.println(alipayFundTransToaccountTransferResponse);
//    }

    public static <T> T irregularJsonToObject(String json, Class<T> clazz) {
        T object = null;
        try {
            ObjectMapper mapper = new ObjectMapper();
            mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
            object = (T) mapper.readValue(json, TypeFactory.rawClass(clazz));
        } catch (JsonParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (JsonMappingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return object;
    }


//    public static <T> T toObject(String json, Class<T> clazz) {
//        T object = null;
//        try {
//            object = (T) objectMapper.readValue(json, TypeFactory.rawClass(clazz));
//        } catch (JsonParseException e) {
//            // TODO Auto-generated catch block
//            e.printStackTrace();
//        } catch (JsonMappingException e) {
//            // TODO Auto-generated catch block
//            e.printStackTrace();
//        } catch (IOException e) {
//            // TODO Auto-generated catch block
//            e.printStackTrace();
//        }
//        return object;
//    }


    public static <T> T toObject(String json, Class<?> clazz) {
        T object = null;
        try {
            object = (T) objectMapper.readValue(json, TypeFactory.rawClass(clazz));
        } catch (JsonParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (JsonMappingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return object;
    }

    public static <T> String beanToJson(T bean) throws JsonProcessingException {
        return objectMapper.writeValueAsString(bean);
    }

    /**
     * bean to map
     *
     * @param <T>
     * @param bean
     * @return
     */
    public static <T> Map<String, String> beanToMap(T bean) {
        Map<String, String> map = new HashMap<>();
        if (bean != null) {
            BeanMap beanMap = BeanMap.create(bean);
            for (Object key : beanMap.keySet()) {
                if (key == null || beanMap.get(key) == null) {
                    continue;
                }
                map.put(key.toString(), beanMap.get(key).toString());
            }
        }
        return map;
    }

    /**
     * bean to map
     *
     * @param <T>
     * @param bean
     * @return
     */
    public static <T> Map<String, String> beanToMapKeepNull(T bean) {
        Map<String, String> map = new HashMap<>();
        if (bean != null) {
            BeanMap beanMap = BeanMap.create(bean);
            for (Object key : beanMap.keySet()) {
                map.put(key == null ? null : key.toString(), beanMap.get(key) == null ? null : beanMap.get(key).toString());
            }
        }
        return map;
    }

    /**
     *
     * @param object
     * @throws IOException
     * @throws JsonMappingException
     * @throws JsonGenerationException
     */
    public String serialize(Object object) {
        Writer write = new StringWriter();
        try {
            objectMapper.writeValue(write, object);
        } catch (JsonGenerationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (JsonMappingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return write.toString();
    }

    /**
    
     *
     * @param json
     * @return JSO
     * @throws IOException
     * @throws JsonMappingException
     * @throws JsonParseException
     */
    public <T> T deserialize(String json, Class<T> clazz) {
        Object object = null;
        try {
            object = objectMapper.readValue(json, TypeFactory.rawClass(clazz));
        } catch (JsonParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (JsonMappingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return (T) object;
    }
}
 

猜你喜欢

转载自blog.csdn.net/qq_27988103/article/details/83058051