jackson jsonUtil

2024-05-25 01:48
文章标签 jackson jsonutil

本文主要是介绍jackson jsonUtil,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

/** 
* CopyRright                          
* Project: asg                                            
* Comments:      json转换工具             
* JDK version used:      <JDK1.6>                              
* Author:       junlee              
* Create Date:  YYYY-MM-DD
* Modified By:  junlee                                    
* Modified Date:  YYYY-MM-DD    
* Email : firehub@163.com                               
* Why & What is modified   
* Version:  1.0                  
*/
package systems.baseutil.json;import java.io.IOException;
import java.io.InputStream;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.List;import javax.servlet.http.HttpServletRequest;import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JSONSerializer;import org.apache.commons.lang.StringUtils;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.JsonParser;
import org.codehaus.jackson.map.DeserializationConfig;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.type.JavaType;public class JsonUtils {/*** java 对象转换为 json 字符串* * @param obj*            对象* @return json*/public static String toJSON(Object obj) {StringWriter writer = new StringWriter();try {mapper.writeValue(writer, obj);} catch (JsonGenerationException e) {throw new RuntimeException(e);} catch (JsonMappingException e) {throw new RuntimeException(e);} catch (IOException e) {throw new RuntimeException(e);}String result = writer.toString();return (null == result) ? "" : result.replaceAll("null", "\"\"");}private static ObjectMapper mapper = new ObjectMapper();static{mapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true);mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);}/*** 反序列化复杂Collection如List<Bean>, 先使用createCollectionType构造类型,然后调用本函数.* @see #createCollectionType(Class, Class...)*/@SuppressWarnings("unchecked")public static <T> T fromJson(String jsonString, JavaType javaType) {if (StringUtils.isEmpty(jsonString)) {return null;}try {return (T) mapper.readValue(jsonString, javaType);} catch (IOException e) {e.printStackTrace();return null;}}/*** 构造的Collection Type如:* ArrayList<Bean>, 则调用constructCollectionType(ArrayList.class,Bean.class)* HashMap<String,Bean>, 则调用(HashMap.class,String.class, Bean.class)*/public static JavaType createCollectionType(Class<?> collectionClass, Class<?>... elementClasses) {return mapper.getTypeFactory().constructParametricType(collectionClass, elementClasses);}/*** json字符串转换为对象* * @param <T>* @param json*            json字符串* @param clazz*            要转换对象的class* @return 对象*/public static <T> T fromJSON(String json, Class<T> clazz) {try {return mapper.readValue(json, clazz);} catch (JsonParseException e) {throw new RuntimeException(e);} catch (JsonMappingException e) {throw new RuntimeException(e);} catch (IOException e) {throw new RuntimeException(e);}}/*** json的字节流转换为对象* * @param <T>* @param request*            HttpServletRequest* @param clazz*            要转换对象的class* @return 对象*/public static <T> T getRequestFromObject(HttpServletRequest request,Class<T> clazz) {try {return fromJSON(request.getInputStream(), clazz);} catch (IOException e) {e.printStackTrace();}return null;}/*** json的字节流转换为对象* * @param <T>* @param json*            json的字节流* @param clazz*            要转换对象的class* @return 对象*/public static <T> T fromJSON(InputStream json, Class<T> clazz) {try {return mapper.readValue(json, clazz);} catch (JsonParseException e) {throw new RuntimeException(e);} catch (JsonMappingException e) {throw new RuntimeException(e);} catch (IOException e) {throw new RuntimeException(e);}}public static List<Object> getJsonList(String jstr, List<Object> li) {char[] cstr = jstr.toCharArray();boolean bend = false;int istart = 0;int iend = 0;for (int i = 0; i < cstr.length; i++) {if ((cstr[i] == '{') && !bend) {istart = i;}if (cstr[i] == '}' && !bend) {iend = i;bend = true;}}if (istart != 0) {String substr = jstr.substring(istart, iend + 1);jstr = jstr.substring(0, istart - 1)+ jstr.substring(iend + 1, jstr.length());substr = substr.replace(",\"children\":", "");substr = substr.replace("]", "");substr = substr.replace("[", "");li.add(substr);getJsonList(jstr, li);}return li;}/*** 封装将json对象转换为java集合对象* * @param <T>* @param clazz* @param jsons* @return*/@SuppressWarnings("unchecked")public static <T> List<T> getJavaCollection(T clazz, String jsons) {List<T> objs = null;JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON(jsons);if (jsonArray != null) {objs = new ArrayList<T>();List list = (List) JSONSerializer.toJava(jsonArray);for (Object o : list) {JSONObject jsonObject = JSONObject.fromObject(o);T obj = (T) JSONObject.toBean(jsonObject, clazz.getClass());objs.add(obj);}}return objs;}/*** 封装PUB对象*/ public static PubModo setPubModo( String json) {PubModo pub= new PubModo();JSONObject obj = JSONObject.fromObject(json);JSONObject pubobj=obj.getJSONObject("pub");if(pubobj.containsKey("userId")){pub.setUserId(pubobj.getString("userId"));}if(pubobj.containsKey("apiVersion")){pub.setApiVersion(pubobj.getString("apiVersion"));}if(pubobj.containsKey("clientHash")){pub.setClientHash(pubobj.getString("clientHash"));}if(pubobj.containsKey("screen")){pub.setScreen(pubobj.getString("screen"));}if(pubobj.containsKey("os")){pub.setOs(pubobj.getString("os"));}if(pubobj.containsKey("model")){pub.setModel(pubobj.getString("model"));}if(pubobj.containsKey("channelCode")){pub.setChannelCode(pubobj.getString("channelCode"));}if(pubobj.containsKey("userId")){pub.setUserId(pubobj.getString("userId"));}if(pubobj.containsKey("imei")){pub.setImei(pubobj.getString("imei"));}if(pubobj.containsKey("imsi")){pub.setImsi(pubobj.getString("imsi"));}if(pubobj.containsKey("clientAgent")){pub.setClientAgent(pubobj.getString("clientAgent"));}if(pubobj.containsKey("appCode")){pub.setAppCode(pubobj.getString("appCode"));}		if(pubobj.containsKey("pname")){pub.setPname(pubobj.getString("pname"));}	if(pubobj.containsKey("apn")){pub.setApn(pubobj.getString("apn"));}return pub;}}


这篇关于jackson jsonUtil的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1000137

相关文章

Springboot中Jackson用法详解

《Springboot中Jackson用法详解》Springboot自带默认json解析Jackson,可以在不引入其他json解析包情况下,解析json字段,下面我们就来聊聊Springboot中J... 目录前言Jackson用法将对象解析为json字符串将json解析为对象将json文件转换为json

SpringDataJPA系列(7)Jackson注解在实体中应用

SpringDataJPA系列(7)Jackson注解在实体中应用 常用的Jackson注解 Springboot中默认集成的是Jackson,我们可以在jackson依赖包下看到Jackson有多个注解 一般常用的有下面这些: 一个实体的示例 测试方法如下: 按照上述图片中的序号做个简单的说明: 1处:指定序列化时候的顺序,先createDate然后是email

使用jackson 进行json字符串转java bean报错

今天在使用jackson 进行json字符串转java bean的时候一直报错,多次查过代码并没有发现什么错误,仔细看了一下报错信息,去网上查找了一下原因,最后发现是缺少无参的构造函数,添加无参构造函数后,项目正常运行。报错信息如下图:

【Java】ApiPost请求返回 `406` 状态码(jackson)

Java系列文章目录 补充内容 Windows通过SSH连接Linux 第一章 Linux基本命令的学习与Linux历史 文章目录 Java系列文章目录一、前言二、学习内容:三、问题描述3.1 问题截图3.2 错误简介3.2.1 HTTP状态码 `406 Not Acceptable`3.2.2 序列化和反序列化 3.3 后端问题位置 四、解决方案:4.1 认识问题4.2 解决过

ObjectMapper[jackson]常用配置及异常处理

在 Java 开发中,Jackson 是最常用的 JSON 处理库之一。ObjectMapper 是 Jackson 的核心类,用于在 Java 对象与 JSON 数据之间进行转换。通过 configure() 方法,我们可以配置 ObjectMapper 的各种特性,以满足不同的需求。本文将详细讲解 ObjectMapper.configure() 方法可以配置的参数及其作用。 ObjectM

Jackson 忽略注解 @JsonIgnore 不生效

问题 com.fasterxml.jackson.core jackson-databind:2.15.0jackson-annotation:2.15.0 // 设置保留字段@Transient@JsonIgnore // 注解不生效private final transient String path = null; 原因 Jackson 版本 2.15.0 下, trans

Jackson反序列化比较好的通用代码

环境 java:1.8+ jackson-databind:2.9.1 代码 /*** 使用的是JackJson,没有使用fastJson,* 因为fastJson对转义符和特殊字符,空串,null支持的不够友好* @param json* @return*/public static XmlModel parser(String json) {ObjectMapper objectMap

关于Spring mvc 项目启动出现com.fasterxml.jackson.databind.exc.InvalidDefinitionException

升级了spiring包到5.0.5版本 启动项目是控制台打印错误日志 java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.exc.InvalidDefinitionException   这说明了当前的版本不匹配,所以我将jackson的版本从2.4升级到了2.9.4 安装完成之后重新启动 问题解决。

Jackson简单使用

Jackson简单使用 1 对象转json串 1.创建数据对象 @Data //lombokpublic class User {private String name;private String sex;} 2.代码 public static void main(String[] args) throws JsonProcessingException {User use

Jackson消息转换器

Jackson json的概念 json是一种应用广泛的数据交换格式,例如: {"name": "admin","age": 20,"hobbies":["唱","跳","rap"]} Jackson就是将Java对象与Json数据进行相互转换的工具。 public class {private String name;private int age;private String[]