Json字符串与Object、List、Map的互转工具类
作者:执笔记忆的空白 时间:2023-04-30 16:08:16
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
标签:json,map,list,字符串,互转,工具类
0
投稿
猜你喜欢
Java thrift服务器和客户端创建实例代码
2022-01-23 04:38:29
基于Java Springboot + Vue + MyBatis实现音乐播放系统
2023-07-09 16:01:41
Java对世界不同时区timezone之间时间转换的处理方法
2023-11-08 13:19:30
C#使用RabbitMq队列(Sample,Work,Fanout,Direct等模式的简单使用)
2023-12-06 10:45:34
Android nativePollOnce函数解析
2022-05-29 01:51:26
AndroidStudio简单实现BMI计算
2022-11-24 03:14:50
Java 方法(方法的定义,可变参数,参数的传递问题,方法重载,方法签名)
2021-07-29 20:17:19
springboot中request和response的加解密实现代码
2023-05-27 16:46:27
Java Runtime的使用详解
2021-10-23 06:46:39
java中LinkedBlockingQueue与ArrayBlockingQueue的异同
2023-08-19 02:56:49
Android定时器和Handler用法实例分析
2022-11-09 22:18:08
Android CoordinatorLayout高级用法之自定义Behavior
2022-03-20 05:47:51
Android利用RecyclerView实现列表倒计时效果
2023-09-04 05:29:27
SpringData JPA中@OneToMany和@ManyToOne的用法详解
2021-10-01 00:49:10
Java ArrayList与LinkedList使用方法详解
2023-08-12 08:23:46
解决线程池中ThreadGroup的坑
2023-08-24 00:13:47
Android实现歌词滚动效果
2023-11-08 04:29:54
Android解析XML文件升级APK的方法
2022-06-05 20:47:26
Kotlin 匿名类实现接口和抽象类的区别详解
2021-09-04 07:14:58
java String的intern方法
2021-07-05 03:23:52