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;
}
}