JSON 解析工具的封装(Java)

java

JSON 自封装工具类

JSON 解析工具的封装(Java

  一直想有一个属于自己的JSON工具,今天终于弄好了.....

   1.添加pom依赖包

  • <!--json解析-->

    <dependency>

    <groupId>com.fasterxml.jackson.core</groupId>

    <artifactId>jackson-core</artifactId>

    <version>2.7.4</version>

    </dependency>

    <dependency>

    <groupId>com.fasterxml.jackson.core</groupId>

    <artifactId>jackson-databind</artifactId>

    <version>2.7.4</version>

    </dependency>

  2.JSONUtils.java

  1. import com.fasterxml.jackson.annotation.JsonInclude;

    import com.fasterxml.jackson.core.type.TypeReference;

    import com.fasterxml.jackson.databind.DeserializationFeature;

    import com.fasterxml.jackson.databind.ObjectMapper;

    import com.fasterxml.jackson.databind.SerializationFeature;

    import java.io.IOException;

    import java.text.SimpleDateFormat;

    import java.util.*;

    /**

    * Created by 杨永生 on 2017/4/26.

    */

    public class JSONUtils {

    private final static ObjectMapper objectMapper = new ObjectMapper();

    static {

    //去掉默认的时间戳格式

    objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);

    //设置为中国上海时区

    objectMapper.setTimeZone(TimeZone.getTimeZone("GMT+8"));

    objectMapper.configure(SerializationFeature.WRITE_NULL_MAP_VALUES, false);

    //空值不序列化

    objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);

    //反序列化时,属性不存在的兼容处理

    objectMapper.getDeserializationConfig().withoutFeatures(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);

    //序列化时,日期的统一格式

    objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));

    objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);

    objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

    //单引号处理

    objectMapper.configure(com.fasterxml.jackson.core.JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);

    }

    private JSONUtils() {

    }

    public static ObjectMapper getInstance() {

    return objectMapper;

    }

    /**

    * javaBean,list,array convert to json string

    */

    public static String obj2json(Object obj){

    try {

    return objectMapper.writeValueAsString(obj);

    }catch (Exception e){

    e.printStackTrace();

    }

    return "";

    }

    public static <T> T obj2obj(Object obj, Class<T> clazz){

    try {

    String str=obj2json(obj);

    return json2pojo(str,clazz);

    }catch (Exception e){

    e.printStackTrace();

    }

    return null;

    }

    /**

    * json string convert to javaBean

    */

    public static <T> T json2pojo(String jsonStr, Class<T> clazz) {

    try {

    return objectMapper.readValue(jsonStr, clazz);

    }catch (Exception e){

    e.printStackTrace();

    }

    return null;

    }

    /**

    * json string convert to map

    */

    public static <T> Map<String, Object> json2map(String jsonStr)

    throws Exception {

    return objectMapper.readValue(jsonStr, Map.class);

    }

    public static <T> T fromJson(TypeReference<T> tr,byte[] content){

    T t=null;

    try {

    t = objectMapper.readValue(content,0, content.length, tr);

    } catch (IOException e) {

    e.printStackTrace();

    }

    return t;

    }

    /**

    * json string convert to map with javaBean

    */

    public static <T> Map<String, T> json2map(String jsonStr, Class<T> clazz)

    throws Exception {

    Map<String, Map<String, Object>> map = objectMapper.readValue(jsonStr,

    new TypeReference<Map<String, T>>() {

    });

    Map<String, T> result = new HashMap<String, T>();

    for (Map.Entry<String, Map<String, Object>> entry : map.entrySet()) {

    result.put(entry.getKey(), map2pojo(entry.getValue(), clazz));

    }

    return result;

    }

    /**

    * json array string convert to list with javaBean

    */

    public static <T> List<T> json2list(String jsonArrayStr, Class<T> clazz)

    throws Exception {

    List<Map<String, Object>> list = objectMapper.readValue(jsonArrayStr,

    new TypeReference<List<T>>() {

    });

    List<T> result = new ArrayList<T>();

    for (Map<String, Object> map : list) {

    result.add(map2pojo(map, clazz));

    }

    return result;

    }

    /**

    * map convert to javaBean

    */

    public static <T> T map2pojo(Map map, Class<T> clazz) {

    return objectMapper.convertValue(map, clazz);

    }

    }

    3.示例:

       Article article=JSONUtils.json2pojo(tempString, Article.class);

 

以上是 JSON 解析工具的封装(Java) 的全部内容, 来源链接: utcz.com/z/394519.html

回到顶部