Json字符串与Object、List、Map的互转工具类
作者:执笔记忆的空白 发布时间:2023-04-30 16:08:16
标签:json,map,list,字符串,互转,工具类
package com.cq2022.zago.base.util;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.StringWriter;
import java.util.List;
import java.util.Map;
import org.codehaus.jackson.JsonFactory;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.SerializationConfig;
import org.codehaus.jackson.map.annotate.JsonSerialize;
import com.alibaba.fastjson.JSONArray;
/**
* Json工具类,实现JSON与Java Bean的互相转换
*/
public class JsonUtils {
private static ObjectMapper objectMapper = new ObjectMapper();
private static JsonFactory jsonFactory = new JsonFactory();
static {
objectMapper.configure(SerializationConfig.Feature.WRITE_NULL_MAP_VALUES, false);
objectMapper.setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL);
}
/**
* 泛型返回,json字符串转对象
* @param jsonAsString
* @param pojoClass
* @return
* @throws JsonMappingException
* @throws JsonParseException
* @throws IOException
*/
public static <T> T fromJson(String jsonAsString, Class<T> pojoClass) throws JsonMappingException,
JsonParseException, IOException {
return objectMapper.readValue(jsonAsString, pojoClass);
}
public static <T> T fromJson(FileReader fr, Class<T> pojoClass) throws JsonParseException, IOException {
return objectMapper.readValue(fr, pojoClass);
}
/**
* Object对象转json
* @param pojo
* @return
* @throws JsonMappingException
* @throws JsonGenerationException
* @throws IOException
*/
public static String toJson(Object pojo) throws JsonMappingException, JsonGenerationException, IOException {
return toJson(pojo, false);
}
public static String toJson(Object pojo, boolean prettyPrint) throws JsonMappingException, JsonGenerationException,
IOException {
StringWriter sw = new StringWriter();
JsonGenerator jg = jsonFactory.createJsonGenerator(sw);
if (prettyPrint) {
jg.useDefaultPrettyPrinter();
}
objectMapper.writeValue(jg, pojo);
return sw.toString();
}
public static void toJson(Object pojo, FileWriter fw, boolean prettyPrint) throws JsonMappingException,
JsonGenerationException, IOException {
JsonGenerator jg = jsonFactory.createJsonGenerator(fw);
if (prettyPrint) {
jg.useDefaultPrettyPrinter();
}
objectMapper.writeValue(jg, pojo);
}
/**
* json字符串转Map
* @param jsonStr
* @return
* @throws IOException
*/
public static Map<String, Object> parseMap(String jsonStr) throws IOException {
Map<String, Object> map = objectMapper.readValue(jsonStr, Map.class);
return map;
}
public static JsonNode parse(String jsonStr) throws IOException {
JsonNode node = null;
node = objectMapper.readTree(jsonStr);
return node;
}
public static ObjectMapper getObjectMapper() {
return objectMapper;
}
/**
* json字符串转 List对象
* @param str json字符串
* @param clazz 转换的类型
* @return
*/
public static <T> List<T> fromListJson(String str,Class<T> clazz){
return JSONArray.parseArray(str, clazz);
}
}
来源:https://blog.csdn.net/moneyshi/article/details/44852343


猜你喜欢
- 简介本文用示例介绍java的Duration的用法。Duration和Period说明Duration类通过秒和纳秒相结合来描述一个时间量,
- 本人从开始用Android Studio到现在已经快一年了吧,在我刚开始用的时候Android Studio还是1.2的版本。当时安装会因为
- 在mybatis中sql是写在xml映射文件中的,如果sql中有一些特殊字符的话,在解析xml文件的时候就会被转义,如若不希望被转义,那该怎
- fork()函数用于从已存在的进程中创建一个新进程。新进程称为子进程,而园进程称为父进程。使用fork()函数得到的子进程是父进程的一个复制
- 简单讲下用法://引依赖<dependency><groupId>tk.mybatis</groupId>
- 一、前言大家好,我是一个初学C语言的小菜狗,是否大家在平时的做题中会遇到和我一样的烦恼,题目的代码已经基本完成,但是在输出时候,总是和题目给
- 前言在使用Webview进行滑动操作时,从屏幕可见区域外向内滑动时,会出现webview区域闪烁的问题(反之也是),本文将提供一种解决方案。
- 在前面的博客中,https://www.jb51.net/article/134866.htm 我们使用了spring boot的异步操作,
- 迪杰斯特拉算法迪杰斯特拉算法是由荷兰计算机科学家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算法。是从一个顶点到其余各顶点的最短路径算
- 本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下1.RandomAccessFileRandomAcce
- 激活码:9MWZD5CC4E-eyJsaWNlbnNlSWQiOiI5TVdaRDVDQzRFIiwibGljZW5zZWVOY
- IEnumerable这个接口在MSDN上是这么说的,它是一个公开枚举数,该枚举数支持在非泛型集合上进行简单的迭代。换句话说,对于所有数组的
- 一.背景最近业务需求需要导出Execl,最终做出的效果如下,中间牵扯到大量的数据计算。二.疑难问题分析问题1:跨单元格处理及边框设置问题2:
- 前言数字时间戳技术是数字签名技术一种变种的应用。是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08
- 一、maven项目的目录结构pom文件定于了一个maven项目的maven配置,一般pom文件的放在项目或者模块的根目录下。maven的遵循
- 先上图下拉刷新跟原生开发一样,下拉刷新在flutter里提供的有组件实现 RefreshIndicator一直不明白为啥组件中都提供下拉刷新
- JAVA JNI函数的注册过程详细介绍我们在java中调用Native code的时候,一般是通过JNI来实现的,我们只需要在java类中加
- 使用spring框架实现数据库事务处理事务对于数据库来说是,是对sql语句的一系列操作,这些操作被组织成为一个事务。事务具有原子性的,要么全
- Android本地存储SharedPreferences详解存储位置SharedPreferences数据保存在: /data /data/
- 一.协程间的通信当需要进行协程间的通信时,可以调用Channel方法,创建一个Channel接口指向的对象,通过调用该对象的send方法和r