-
2021-12-20 19:50:27
调用方法fromJson()
package cn.enilu.flash.utils; import cn.enilu.flash.bean.entity.system.User; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.JavaType; import com.fasterxml.jackson.databind.ObjectMapper; import java.io.StringWriter; import java.util.Date; import java.util.List; import java.util.Map; /** * 封装json工具类<br> * 通过该类减少项目中对特定的json库依赖,方便统一切换json库,目前使用jackson * * @author :enilu * @date :Created in 2020/5/31 21:55 */ public class JsonUtil { private static ObjectMapper objectMapper = null; private static ObjectMapper objectMapper() { if (objectMapper == null) { objectMapper = new ObjectMapper(); //如果有特殊处理需求在下面做ObjectMapper的设置 } return objectMapper; } public static String toJsonForHuman(Object obj) { try { return objectMapper().writerWithDefaultPrettyPrinter().writeValueAsString(obj); } catch (Exception e) { throw new RuntimeException(e); } } public static String toJson(Object obj) { StringWriter sw = new StringWriter(); try { objectMapper().writeValue(sw, obj); } catch (Exception e) { throw new RuntimeException(e); } return sw.toString(); } public static String toJsonNotNull(Object obj) { StringWriter sw = new StringWriter(); try { objectMapper().setSerializationInclusion(JsonInclude.Include.NON_NULL); objectMapper().writeValue(sw, obj); } catch (Exception e) { throw new RuntimeException(e); } return sw.toString(); } public static <T> T fromJson(Class<T> klass, String jsonStr) { T obj = null; try { obj = objectMapper().readValue(jsonStr, klass); } catch (Exception e) { throw new RuntimeException(e); } return obj; } public static <T> List<T> fromJsonAsList(Class<T> klass, String jsonStr) { List<T> objList = null; try { JavaType t = objectMapper().getTypeFactory().constructParametricType( List.class, klass); objList = objectMapper().readValue(jsonStr, t); } catch (Exception e) { throw new RuntimeException(e); } return objList; } /** * 判断给定的字符串是否是json格式 * * @param jsonStr * @return */ public static boolean isJson(String jsonStr) { try { if (jsonStr.startsWith("{")) { fromJson(Map.class, jsonStr); } else { fromJsonAsList(Map.class, jsonStr); } return true; } catch (Exception e) { return false; } } public static void main(String[] args) { User user = new User(); user.setAccount("admin"); user.setCreateTime(new Date()); String json = toJson(user); System.out.println("压缩后的json字符串:========》"); System.out.println(json); System.out.println("方便调试查看的json字符串:===》"); System.out.println(toJsonForHuman(user)); System.out.println("不输出值为null的json字符串:==》"); System.out.println(toJsonNotNull(user)); User user2 = fromJson(User.class, json); System.out.println("json字符串转对象:==========》"); System.out.println(user2.getAccount() + user2.getCreateTime()); List<User> users = Lists.newArrayList(user); String jsons = toJson(users); List<User> users2 = fromJsonAsList(User.class, jsons); System.out.println("转换为集合后的集合长度:=======》"); System.out.println(users2.size()); System.out.println(isJson(json)); System.out.println(isJson(jsons)); System.out.println(isJson("{\"aaaa\":}")); } }
更多相关内容 -
js 将json字符串转换为json对象的方法解析
2020-12-03 06:35:50一、JSON字符串转换为JSON对象 要使用上面的str1,必须使用下面的方法先转化为JSON对象: //由JSON字符串转换为JSON对象 var obj = eval(‘(‘ + str + ‘)’); 或者 var obj = str.parseJSON(); //由JSON... -
js中把JSON字符串转换成JSON对象最好的方法
2020-12-04 15:04:28在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数。 2. 使用Function对象来进行返回解析。...这里首先给出JSON字符串集,字符串集如下: 代码如下:var data = ” { root: -
Java中Json字符串直接转换为对象的方法(包括多层List集合)
2020-10-21 16:17:20下面小编就为大家带来一篇Java中Json字符串直接转换为对象的方法(包括多层List集合)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 -
将Json字符串转为对象JSONObject
2022-01-28 11:36:23将其dataWrap.collectData()收集的数据Joson字符串经过处理转为对象将Json字符串转为对象JSONObject
有些JSON类型的字符串无法直接转对象,需要先做处理。例如dataWrap.collectData()收集的数据:jsonStr = {"dataWrap.jsonData":"\"data\":{\"id\":\"177\",\"name\":\"张三\",\"age\":\"21\",\"联系方式\":\"13355556666\",\"createtime\":\"2022-01-21 16:49:42\"}"}`
将其转为对象的思路:
1.截取data后的冒号:之后的内容 A
2.截取 A 后的最后的 "}
3.去除反斜杠
4.转为字符串/** * jsonStr 转为 JSONObject * @param jsonStr * @return */ public JSONObject toJSONObject(String jsonStr){ if(StringUtils.isEmpty(jsonStr)){//字符串为空 return null; } JSONObject obj = null; //定义返回结果 String[] strArray = jsonStr.split(":",3); if(strArray.length>2){ String str = strArray[2]; //截取 "data": 后的 String str2 = str.substring(0,str.length() -2).toString(); //将最后的 "} 去除 str2 = str2.replaceAll("\\\\",""); //或者 str = str.replace("\\",""); //将反斜杠去除 obj = new JSONObject().fromObject(str2); //将json字符串转换为json对象 } return obj; }
到时候可以直接调用上述方法:
JSONObject obj1 = toJSONObject(jsonStr);
-
Json对象与Json字符串互转(4种转换方式)
2020-12-04 05:37:14//jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象 2>浏览器支持的转换方式(Firefox,chrome,opera,safari,ie9,ie8)等浏览器: 代码如下: JSON.parse(jsonstr); //可以将json字符串转换成json... -
jQuery.parseJSON(json)将JSON字符串转换成js对象
2020-12-10 18:07:54接受一个JSON字符串,返回解析后的对象。 传入一个畸形的JSON字符串会抛出一个异常。比如下面的都是畸形的JSON字符串: {test: 1} ( test 没有包围双引号) {‘test’: 1} (使用了单引号而不是双引号) 另外,如果... -
JSON字符串转JSON对象
2020-12-02 07:56:13适用酒店O2O菜单 var stri = [ //会员中心 { "menucode": 1, "menuname": "会员中心", }, { "menucode": 1, "name": "会员查询", "perm_id": 1, SubsMenu: [{ "perm_id": 1, "menueurl": "Customer/Index", ... -
由php对象生成json字符串 把php对象变成json字符串.zip
2021-01-11 22:38:03由php对象生成json字符串 把php对象变成json字符串.zip -
记录一次使用fastjson把json字符串转为对象时属性缺失问题
2020-05-22 20:23:05记录一次使用fastjson把json字符串转为对象时属性缺失问题一、问题现象1 使用到的POJO:2 复现步骤二、问题原因三、解决办法四、源码追踪 在一次使用fastJson把json字符串转为对象时,发现有个属性缺失,经...
在一次使用fastJson把json字符串转为对象时,发现有个属性缺失,经多方百度才得问题原因,现将问题原因及解决步骤记录如下:一、问题现象
问题复现步骤如下
1 使用到的POJO:
public class SysUser { private String userName; private String password; private String job; private String gender = "Unknown"; public SysUser(String userName, String password, String job) { this.userName = userName; this.password = password; this.job = job; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getJob() { return job; } public void setJob(String job) { this.job = job; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } @Override public String toString() { return "SysUser{" + "userName='" + userName + '\'' + ", password='" + password + '\'' + ", job='" + job + '\'' + ", gender='" + gender + '\'' + '}'; } }
2 复现步骤
public static void main(String[] args) { SysUser sysUser = new SysUser("大王", "大王", "王者"); sysUser.setGender("男"); String jsonString = JSON.toJSONString(sysUser); SysUser userObject = JSON.parseObject(jsonString, SysUser.class); System.out.println(userObject); }
debug查看上述代码的执行结果如下图,由执行结果可看到,我给sysUser变量的字段gender赋值了"男",由sysUser转换成的jsonString中的字段gender值也是男,但是使用
JSON.parseObject(jsonString, SysUser.class);
把字符串转为SysUser对象时,gender属性仍然为默认值“Unknown”,也就是说并没有把sonString中的字段值赋予SysUser对象的gender变量:
二、问题原因
此问题困惑了我挺久,网查此问题大部分都是缺少字段的set方法或者属性名有问题导致的。由于根本原因的查找未涉及源码追究,暂不表。
直接说结论,结论就是,此pojo有四个属性,但是唯一的一个构造方法只包括了其中三个属性,导致另外一个属性在进行字符串转对象时,无法赋值(我一直以为只要有字段属性的get和set方法,fastJson转换时就会把值赋予给相应字段,原来并不是如此)。三、解决办法
解决方法很简单,可用如下两个方式:
1:增加全参数构造器
2:增加无参构造器四、源码追踪
暂略。。。。。
-
java自定义类对象转json字符串(记录我是如何从一无所知到最后的了解)
2020-12-22 11:53:11写一个工具类,有两个方法,一个是输入类对象,输出类对象的json字符串,还有一个是输入json字符串和对象类型,输出类对象。 既然跟json有关,我开始百度了解json字符串: 百度是这样说的:JSON(JavaScript Object ... -
将JSON字符串转换成Map对象的方法
2020-11-29 18:51:25页面向后台action传递一个json字符串,需要将json字符串转换成Map对象 public Map<String> toMap(Object object) { Map<String> data = new HashMap(); // 将json字符串转换成jsonObject JSONObject jsonObject... -
java中将json字符串转为实体对象
2020-08-10 15:30:25java中将json字符串转为实体对象 import com.alibaba.fastjson.JSONObject; JSONObject.parseObject("{title:‘完善资料’,content:‘完善个人资料,标签和兴趣爱好’,diamond:’+2’,type:1,status:1}", ... -
js 将json字符串转换为json对象
2019-08-06 01:20:06NULL 博文链接:https://tanyongbing.iteye.com/blog/2083144 -
在python中将字符串转为json对象并取值的方法
2020-09-19 19:03:15今天小编就为大家分享一篇在python中将字符串转为json对象并取值的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
java 将 json 字符串转为 java 对象
2020-03-17 13:19:20做项目的时候需要用到这个功能,但一时忘记应该怎么做了。... // 从前端传过来的 json 字符串 com.alibaba.fastjson.JSONArray getallInfos = JSON.parseArray(json); for (int i = 0; i < getallInfos.size(); i... -
java对象转换为json字符串或字符串数组
2018-07-12 22:30:10主要用于将java对象转换为json对象字符串,或字符串数组。 -
json字符串转为json对象
2022-04-14 11:02:59json字符串转为json对象 1.eval() var data = "[{message:'data0',id:0},{message:'data1',id:1},{message:'data2',id:2}]" var data1 = = eval(`(${data})`) console.log(data1) // [{ message: "data0", id: 0 },{... -
如何把JSON字符串转为指定的Java对象
2019-07-04 14:12:24如何把JSON字符串转为指定的Java对象 介绍 本篇文章介绍如何运用alibaba.fastjson将JSON字符串转为指定的Java对象。 准备 下载com.alibaba.fastjson的jar包。 可在网站MavenRepository: ... -
json字符串转对象的几种方式
2020-09-28 16:55:22json字符串转对象 import net.sf.json.JSONObject String response="{\"status\":\"error\",\"message\":\"没有选中文件!\"}"; JSONObject jsonObject=JSONObject.fromObject(response); String documentId=... -
Java实现Json字符串与Object对象相互转换的方式总结
2020-10-17 08:04:06主要介绍了Java实现Json字符串与Object对象相互转换的方式,结合实例形式总结分析了java基于Json-Lib、Org.Json、Jackson、Gson、FastJson五种方式转换json类型相关操作技巧,需要的朋友可以参考下 -
JS中将json字符串转为json对象的三种方式
2022-01-21 16:57:12第一种:利用JSON的parse方法,即jsonObj=JSON.parse(jsonStr); 第二种:jsonObj =eval('(' + jsonStr+')'); 第三种:比较难理解:jsonObj =(newFunction("return " +jsonStr))(); -
JSON对象转化为字符串详解
2020-12-11 00:29:58指将 JavaScript 值转化为 JSON 字符串的过程。 JSON.stringify() 能够将 JavaScript 值转换成 JSON 字符串。JSON.stringify() 生成的字符串可以用 JSON.parse() 再还原成 JavaScript 值。 参数的含义 1)JSON.... -
json对象转为字符串,当做参数传递时加密解密的实现方法
2020-10-22 01:00:47下面小编就为大家带来一篇json对象转为字符串,当做参数传递时加密解密的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 -
java将json字符串转换成对象,看这篇足矣了!
2021-07-12 01:05:12把字符串转换成整数 11. 正则表达式匹配 12. 表示数值的字符串 13. 字符流中第一个不重复的字符 13个字符串面试高频答案解析 13字符串 算法刷题LeetCode中文版:字符串 总结 阿里伤透我心,疯狂复习刷题,终于喜提... -
json字符串转换c++类对象
2019-01-19 10:17:40json字符串转换c++类对象 -
JSON字符串转为java对象
2018-08-25 09:33:54在日常的java开发中,我们经常会需要接收到其它地方传过来的数据,格式也很多都是通过JSON格式来传递的。 所以我们经常需要将JSON格式的数据转换为我们所需要的数据格式,比如javabean形式。 对于只有一层的JSON... -
转:js 将json字符串转换为json对象的方法解析
2022-01-24 20:40:40一、JSON字符串转换为JSON对象 要使用上面的str1,必须使用下面的方法先转化为JSON对象: //由JSON字符串转换为JSON对象 var obj = eval(’(’ + str + ‘)’); 或者 var obj = str.parseJSON(); //由JSON字符串转 -
jQuery将json对象转为字符串,将json字符串转为对象
2020-07-20 17:55:12jQuery将json对象转为字符串,将json字符串转为对象 2020/07/20 json对象转为字符串 JSON.stringify(jsonObj) json字符串转为对象 JOSN.parse(jsonString) 需要注意的是: 使用eval("(" + jsonObj + “)”) 也可以...
收藏数
51,279
精华内容
20,511