pom 包导入:
<!-- json解析 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson-databind.version}</version>
</dependency>
package com.sitech.pos.smartcitypayposcenter.util;
import com.alibaba.fastjson.serializer.SerializeConfig;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.serializer.SimpleDateFormatSerializer;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.node.ObjectNode;
import lombok.extern.slf4j.Slf4j;
import java.io.IOException;
import java.util.*;
/**
-
@author GZY json工具类
*/
@Slf4j
public class JsonUtils {private static SerializeConfig serialConfig = new SerializeConfig();
private static SerializerFeature[] serialFeatures = null;
private static final String DATE_FORMART = “yyyy-MM-dd HH:mm:ss”;
static {
//允许输出空属性 serialFeatures = new SerializerFeature[]{SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty}; //java.util.Date的转换 serialConfig.put(Date.class, new SimpleDateFormatSerializer(DATE_FORMART));
}
/**
- 普通json转map
- 例子 {“phone_no”:“15074917062”,“order_date”:“20150316145250”,“imei”
-
* :"sasassdsadsadfdssf","external_order_id":"jd222233331",
-
* "op_type":"01","login_no":"jdop001","chn_code":"11221"}
- @param
- @return
*/
public static Map<String, String> json2Map(String param) {
Map<String, String> parameterMap = new LinkedHashMap<String, String>();
if (param != null && !param.equals(“null”)) {
if (param.length() > 2) {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
try {
parameterMap = objectMapper.readValue(param,
new TypeReference<LinkedHashMap<String, String>>() {
});
} catch (Exception e) {
log.error(“json解析异常” + param, e);
}
}
}
return parameterMap;
}
/**
-
把JavaBean转换为json字符串
-
@param obj 要转的javabean
-
@return json串
*/
public static String bean2json(Object obj) {if (obj == null){
return “”;
}
ObjectMapper m = new ObjectMapper();
m.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
// 由于下面这行代码会导致bean中设置的json注解失效,所以注释掉
// m.setAnnotationIntrospector(new JaxbAnnotationIntrospector(TypeFactory.defaultInstance()));
try {
//return m.writeValueAsString(obj).replaceAll(“”“null”“|“null”|null”, “”“”);
return m.writeValueAsString(obj);
} catch (JsonProcessingException e) {
// TODO Auto-generated catch block
log.error(“json解JsonProcessingException异常”, e);
}
return “”;
}
/**
- bean转普通json串
- @param json 要转的josn
- @return obj
*/
public static Object readJson(String json, Class<?> clz) {
return com.alibaba.fastjson.JSON.parseObject(json, clz);
}
/**
-
使用泛型方法,把json字符串转换为相应的JavaBean对象。
-
(1)转换为普通JavaBean:readValue(json,Student.class)
-
(2)转换为List,如List,将第二个参数传递为Student
-
[].class.然后使用Arrays.asList();方法把得到的数组转换为特定类型的List
-
@param jsonStr
-
@param collectionClass
-
@return
*/
@SuppressWarnings(“unchecked”)
public static T readJson(String jsonStr, Class collectionClass,
Class… elementClasses) {
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);JavaType javaType = mapper.getTypeFactory().constructParametricType(
collectionClass, elementClasses);try {
return (T) mapper.readValue(jsonStr, javaType);
} catch (JsonParseException e) {
// TODO Auto-generated catch block
log.error(“json解析JsonParseException异常”, e);
} catch (JsonMappingException e) {
// TODO Auto-generated catch block
log.error(“json解析JsonMappingException异常”, e);
} catch (IOException e) {
// TODO Auto-generated catch block
log.error(“json解析IOException异常”, e);
}
return null;
}
/**
-
json数组转List
-
@param jsonStr
-
@param valueTypeRef
-
@return
*/
@SuppressWarnings(“unchecked”)
public static T readValue(String jsonStr, TypeReference valueTypeRef) {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);try {
return (T) objectMapper.readValue(jsonStr, valueTypeRef);
} catch (Exception e) {
log.error(“json解析Exception异常”, e);
}return null;
}
/**
- javabean转json串
- @param obj 要转的javabean
- @return json串
*/
public static String simpleObjectToJsonStr(Object obj) {
return toJsonStrByFastjson(obj);
}
/**
- 将对象转化为Json String
- @param obj
- @return String
*/
public static String toJson(Object obj) {
return toJsonStrByFastjson(obj);
}
private static String toJsonStrByFastjson(Object obj) {
try {
return com.alibaba.fastjson.JSON.toJSONString(obj, serialConfig, serialFeatures);
} catch (Exception e) {
log.error(“转换JSON失败”, e);
return “”;
}
}/**
- javabean转json串
- @param list <List<?>> 要转的javabean集合
- @return json串
*/
public static String simpleListToJsonStr(List<?> list) {
if (list == null || list.size() == 0) {
return “[]”;
}
return toJsonStrByFastjson(list);
}
public static String getNodeFromJson(String name, String json) {
ObjectMapper objectMapper = new ObjectMapper();
try {
JsonNode node = objectMapper.readTree(json);
JsonNode v = node.findValues(name).get(0);
if (null != v) {
if (v.isValueNode()) {
return v.asText();
} else {
return v.toString();
}
}
} catch (Exception e) {
e.printStackTrace();
}
return “”;
}/**
- 向json的根目录下获取第一级的name对应的值
- @param name
- @param json
- @return
*/
public static String getNodeFromJsonRoot(String name, String json) {
ObjectMapper objectMapper = new ObjectMapper();
try {
JsonNode node = objectMapper.readTree(json);
JsonNode v = node.findValues(name).get(0);
if (null != v) {
if (v.isValueNode()) {
return v.asText();
} else {
return v.toString();
}
}
} catch (Exception e) {
e.printStackTrace();
}
return “”;
}
/**
- 向json的根目录下第一级的name设置对应的值value
- @param name
- @param value
- @param json
- @return
*/
public static String setNodeValueToJsonRoot(String name, String value, String json) {
ObjectMapper objectMapper = new ObjectMapper();
try {
JsonNode node = objectMapper.readTree(json);
if (node instanceof ObjectNode) {
((ObjectNode) node).put(name, value);
}
return node.toString();
} catch (Exception e) {
e.printStackTrace();
}
return “”;
}
/**
-
转换复杂类型json map 嵌套,list 不支持 jingcy
-
@param jsonString
-
@return
*/
public static HashMap<String, Object> fromJson2Map(String jsonString) {
HashMap jsonMap = com.alibaba.fastjson.JSON.parseObject(jsonString, HashMap.class);HashMap<String, Object> resultMap = new HashMap<String, Object>();
for (Iterator iter = jsonMap.keySet().iterator(); iter.hasNext(); ) {
String key = (String) iter.next();
if (jsonMap.get(key) instanceof com.alibaba.fastjson.JSONObject) {
resultMap.put(key, fromJson2Map(jsonMap.get(key).toString()));} else { Object o = jsonMap.get(key); resultMap.put(key, jsonMap.get(key)); }
}
return resultMap;
}
/**
- 转换复杂类型json map 嵌套,list 不支持 jingcy
- @param map
- @return
*/
public static String fromMap2Json(Map map) {
return com.alibaba.fastjson.JSON.toJSONString(map);
}
public static Object json2Object(String json, Class calssz) {
return com.alibaba.fastjson.JSON.parseObject(json, calssz);
}/**
-
将 Map 转换为 JSON
-
@param map
-
@return
*/
public static String mapToJson(Map map) {ObjectMapper objectMapper = new ObjectMapper();
try {
return objectMapper.writeValueAsString(map);
} catch (Exception e) {
e.printStackTrace();
}
return “”;
}
public static Map<String, Object> pojo2map(Object obj){
ObjectMapper objectMapper = new ObjectMapper();
Map<String, Object> map = objectMapper.convertValue(obj, Map.class);
return map;
}
}