json串和java对象互相转换by jackson

复制代码
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.*;
import java.util.ArrayList;
import java.util.List;


public class JacksonUtils {
    
    private final static ObjectMapper mapper = new ObjectMapper();
    static {
        mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
        mapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true);
    }

    /**
     * 将对象转换成json字符串,用于将发送的报文打印出到日志
     */
    public static String toString(Object object) {

        String result = null;
        if (null == object)
            return result;
        try {
            result = mapper.writeValueAsString(object);
        } catch (JsonProcessingException e) {
            System.out.println("对象转换成json字符串出错");
        }
        return result;
    }
    
    /**
     * 将json字符串转换成对象,用于将发送的报文打印出到日志
     * @return 
     */
    public static <T> T getObjectFromJsonString(String jsonStr, Class<T> responseType) {

        T result = null;
        if (null == jsonStr)
            return result;
        try {
         result = mapper.readValue(jsonStr, responseType);
      } catch (IOException e) {
           e.printStackTrace();
         System.out.println("json字符: " + jsonStr +" 串转换成对象出错");
      }
        return result;
    }
    
    /**
     * 从文件中读取json字符串,转换成对象列表
     * @param fileName
     * @param JsonObjectType
     * @return
     */
    public static <T> List<T> readJsonFromFile(String fileName, Class<T> JsonObjectType){
      List<T> result = new ArrayList<T>();
      try {
         //File file = new File("D:\\work\\raiyitest\\a\\a.txt");
         File file = new File(fileName);
         InputStreamReader isr = new InputStreamReader(new FileInputStream(file));
         BufferedReader br = new BufferedReader(new FileReader(file));
         //BufferedReader br = new BufferedReader(isr);
         String data = null;
         while((data = br.readLine()) != null){
            T myRule = getObjectFromJsonString(data, JsonObjectType);
            result.add(myRule);
         }
         br.close();
      } catch (Exception e) {
         e.printStackTrace();
      }
      return result;
   }
    

   /**
    * 将对象列表转换成json字符串,写入文件
    * @param fileName
    * @param jsonObjectList
    */
   public static <T> void WriteJsonObjectToFile(String fileName, List<T> jsonObjectList){
      try {
         //File file = new File("D:\\work\\raiyitest\\a\\a.txt");
         File file = new File(fileName);
           OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(file));
           BufferedWriter bw = new BufferedWriter(osw);
         for(T jsonObject : jsonObjectList){
            String myJsonStr = toString(jsonObject);
            System.out.println(myJsonStr);
            bw.write(myJsonStr);
            bw.newLine();
         }
         bw.close();
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
}
相关推荐
Java小白笔记1 小时前
Java 单元测试怎么写:JUnit 5、Mockito 与 Spring Boot 方法级实战
java·junit·单元测试
CoderYanger2 小时前
前端基础——JavaScript(WebAPI)(下篇)
java·开发语言·前端·javascript·程序人生·面试·职场和发展
lisin-lee-cooper2 小时前
简单聊聊 Spring 框架源码
java·后端·spring
一木 之林2 小时前
七、一-AI 工程实践、插件化调试与软件交付
java·linux·c++
边境悍匪2 小时前
蜗牛学苑 Java 智能体学习 Day38|Spring AI Alibaba2 思维导图复盘
java·学习·spring
Co_Hui2 小时前
Java 静态内部类、非静态内部类、匿名内部类的区别?
java
Wang's Blog3 小时前
Java框架快速入门: Spring Security+OAuth2之自定义认证过滤器实现JSON登录
java·spring·json
kakakahahahaha3 小时前
Windows笔记本重装系统的4种路径和风险边界
windows·电脑·笔记本电脑·内容运营·软件需求·重装系统
Wang's Blog3 小时前
Java框架快速入门: Spring Security+OAuth2之密码验证规则与自定义注解
java·数据库·spring
一嘴一个橘子3 小时前
java - redis 缓存击穿 - 互斥锁
java