您的位置:首页 > 新闻 > 热点要闻 > 重新整理了新版JSON工具类和一些见解

重新整理了新版JSON工具类和一些见解

2025/2/26 2:03:56 来源:https://blog.csdn.net/qq_53374893/article/details/139869189  浏览:    关键词:重新整理了新版JSON工具类和一些见解

封装好了,工具类,直接粘贴就好了:所需依赖 springboot,hutool 

package com.jmj.gulimall.product.utils;import cn.hutool.core.bean.BeanUtil;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.MapperFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.util.StdDateFormat;
import com.jmj.gulimall.product.vo.spu.Attr;
import lombok.*;import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;public class JsonUtils {private final static ObjectMapper objectMapper;@Data@AllArgsConstructor@NoArgsConstructor@EqualsAndHashCode(callSuper = true)//不加这个情况下重写的Hashcode和Equals 不会比较父类属性值@ToString(callSuper = true)//包括父类@JsonIgnoreProperties({"attrValue","attrId","attrName"})//这个注解可以忽略父类属性,不需要spring环境public static class Energy extends Attr {@JsonIgnore//忽略本类字段private String name;private Date time;}public static ObjectMapper instance(DateFormat dateFormat){ObjectMapper objectMapper = new ObjectMapper();//{"name":"边杰","time":"2024-06-21T10:43:43.480+0000"}objectMapper.setDateFormat(dateFormat);//中间没有:号objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);//禁用转换时间戳// 序列化时忽略未知属性objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);// 禁用忽略大小写的特性objectMapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, false);// 设置序列化时不包含空属性// objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); // 不包括null值objectMapper.setSerializationInclusion(JsonInclude.Include.ALWAYS); // 全部return objectMapper;}public static ObjectMapper instance(){return instance(new StdDateFormat().withColonInTimeZone(false));}static {objectMapper = instance();}public static DateFormat format(){SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");return simpleDateFormat;}public static String getJson(Object obj, boolean exIsThrow) {try {return objectMapper.writeValueAsString(obj);} catch (JsonProcessingException e) {e.printStackTrace();if (exIsThrow) {throw new RuntimeException("JSON解析异常 e=" + e.getMessage());} else {return null;}}}public static String getJson(Object obj) {return getJson(obj, false);}public static <R> R getObj(String json, Class<R> clazz, boolean exIsThrow) {try {return objectMapper.readValue(json, clazz);} catch (JsonProcessingException e) {e.printStackTrace();if (exIsThrow) {throw new RuntimeException("JSON解析异常 e=" + e.getMessage());} else {return null;}}}public static <R> R getObj(String json, Class<R> clazz) {return getObj(json, clazz, false);}public static <T> T getObj(String json,TypeReference<T> type, boolean exIsThrow) {try {return objectMapper.readValue(json, type);} catch (JsonProcessingException e) {e.printStackTrace();if (exIsThrow) {throw new RuntimeException("JSON解析异常 e=" + e.getMessage());} else {return null;}}}public static <T> T getObj(String json,TypeReference<T> type) {return getObj(json, type,false);}public static void main(String[] args) throws JsonProcessingException {
//        List<Energy> list = Arrays.asList(new Energy("边界", new Date()), new Energy("边界", new Date()), new Energy("边界", new Date()));
//        String s = getJson(list);
//        System.out.println(s);
//        List<Energy> energy = getObj("[{\"attrId\":\"123\",\"attrName\":null,\"name\":\"边界\",\"time\":\"2024-06-21T11:59:00.118+0000\"},{\"attrId\":null,\"attrName\":null,\"name\":\"边界\",\"time\":\"2024-06-21T11:59:00.118+0000\"},{\"attrId\":null,\"attrName\":null,\"name\":\"边界\",\"time\":\"2024-06-21T11:59:00.118+0000\"}]",
//                new TypeReference<List<Energy>>() {},true);
//        System.out.println(energy);//        System.out.println(instance(format()).writeValueAsString(list));Energy energy = new Energy("边界", new Date());energy.setAttrId(123L);energy.setAttrName("a");energy.setAttrValue("as");System.out.println(getJson(energy));Attr attr = new Attr();//父类属性也会Copy过来BeanUtil.copyProperties(energy,attr);System.out.println(attr);}}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com