zoukankan      html  css  js  c++  java
  • JSON 解析工具的封装(Java)

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

  • 相关阅读:
    支持国产共享软件
    Win CE 5.0 增加电池电量显示
    [转]C# 系统应用之鼠标模拟技术及自动操作鼠标
    自己写的 读写 ini 配置文件类
    自己写的 Readini 类
    sizeof与strlen()、递归优化题解
    Git学习资源收集汇总
    好用的Google Chrome插件
    【转】C# Socket编程(5)使用TCP Socket
    【转】C# Socket编程(4)初识Socket和数据流
  • 原文地址:https://www.cnblogs.com/yysbolg/p/6769820.html
Copyright © 2011-2022 走看看