/**
* 若成功往往有data数据
* 示例:
* UserBase userBase = new UserBase();
* userBase.setUserName("李昱鑫");
* userBase.setUserPwd("123");
* userBase.setUserAge(100);
* return ResponseUtil.okWithData(userBase); 对应结果1:
* return ResponseUtil.okWithData(objectMapper.writeValueAsString(userBase)); 对应结果2:
*
* 结果1:{"flag":true,"code":0,"msg":"ok","data":{"userName":"李昱鑫","userPwd":"123","userAge":100},"tkexp":false,"hurl":null,"time":"2019-12-31 08:19:25"}
* 结果2:{"flag":true,"code":0,"msg":"ok","data":"{\"userName\":\"李昱鑫\",\"userPwd\":\"123\",\"userAge\":100}","tkexp":false,"hurl":null,"time":"2019-12-31 08:21:40"}
* 这个为Object不再为String,若为String的话,当数据量非常多的时候,会产生很多转义字符\,浪费网络流量,所以这里修改为object类型,其余的工作交给前端。
* 使用方法要求如下:
* 1.当是用到第三方的接口时的返回时,比如淘宝的API接口,返回值必须与文档上一致。那么需要传入字符串,淘宝的举例:return ResponseUtil.okWithData(rsp.getBody());
* 虽然这样会产生很多的转义字符,但是没有办法,必须与文档的返回一致,这时data要传入String类型。
* 2.当是我们自己调用我们自己的接口时,就没有必须传入String了,直接传入Object就可以了。举例:查询数据库中的记录,直接返回mybatis的mapper查询的结果list对象就可以,举例:
* Mapper.java里 -- List<JdpTbTrade> selectListByTids(String tids); Controller里 -- return ResponseUtil.okWithData(jdpTbTradeMapper.selectListByTids(tids));
* 这样就减少了转义字符,前端调试看着也方便。
*/
private Object data;

问题1:这样返回的json

{"flag":true,"code":0,"msg":"ok","data":{"userName":"李昱鑫","userPwd":"123","userAge":100},"tkexp":false,"hurl":null,"time":"2019-12-31 08:19:25"}
其它地方如何使用;
        //{"flag":true,"code":0,"msg":"ok","data":{"userName":"李某","userPwd":"123","userAge":100},"tkexp":false,"hurl":null,"time":"2019-12-31 08:19:25"}
String json = "{\"flag\":true,\"code\":0,\"msg\":\"ok\",\"data\":{\"userName\":\"李某\",\"userPwd\":\"123\",\"userAge\":100},\"tkexp\":false,\"hurl\":null,\"time\":\"2019-12-31 08:19:25\"}"; //1.转成ResponseUtil
ResponseUtil responseUtil = objectMapper.readValue(json, ResponseUtil.class); //使用方法1.取出data,由于是一个object对象,把这个对象转成string,然后再转成map进行使用
Map<String, Object> map = objectMapper.readValue(objectMapper.writeValueAsString(responseUtil.getData()), Map.class);
System.out.println(map.get("userName")); //使用方法2:取出data转换成String,然后再转成实体类
UserBase userBase = objectMapper.readValue(objectMapper.writeValueAsString(responseUtil.getData()), UserBase.class);
System.out.println(userBase.getUserName()); //使用方法3:利用objectMapper直接转换成Map,显然这种方法更简洁,使用这种
Map<String, Object> map2 = objectMapper.convertValue(responseUtil.getData(), Map.class);
System.out.println(map2.get("userName")); //使用方法4:利用objectMapper直接转换成实体类,显然这种方法更简洁,使用这种,【推荐使用这种方式】
UserBase userBase2 = objectMapper.convertValue(responseUtil.getData(), UserBase.class);
System.out.println(userBase2.getUserName());
return String.valueOf(map.get("userName"));

ResponseUtil jackson 转换问题;返回结果与 Bean 之间的转换,推荐使用convertValue的更多相关文章

  1. jsonObject关于xml,json,bean之间的转换关系

    1.json转换为JAVA @Test public void jsonToJAVA() { System.out.println("json字符串转java代码"); Strin ...

  2. Java之SimpleDateFormat日期格式转换(Date 和 String 类型之间的转换)

    SimpleDateFormat : 可以选择任何用户定义的日期-时间格式的模式    "yyyy-MM-dd HH:mm:ss:SSS"1.格式化:Date -->Stri ...

  3. 19-3-4 Python进制转换;bool str int三者之间的转换;字符串的索引,切片;for循环的使用

    进制转换: 二进制转十进制:  0010 1111 = 1*2**0+1*2**1+1*2**2+1*2**3+1*2**5 十进制转换二进制: 用十进制数除2逆序取余 --->101010 布 ...

  4. Python - 字符和字符值之间的转换

    字符和字符值之间的转换 Python中, 字符和字符值, 直接的转换, 包含ASCII码和字母之间的转换,Unicode码和数字之间的转换; 也可以使用map, 进行批量转换, 输出为集合, 使用jo ...

  5. Swift_ios_二进制,十进制,十六进制之间的转换

    这里所说的转换,并不是Swift中字面量之间的转换.如果是字面量之间的转换,ios系统中已经自动帮我们转换了. 例如let number1:Int = 8let number2:Int = 0b100 ...

  6. Swift数字类型之间的转换

    Swift数字类型之间的转换Swift是一种安全的语言,对于类型的检查非常严格,不同类型之间不能随便转换.一.整型之间的转换在C和Objective-C等其他语言中,整型之间有两种转换方法:从小范围数 ...

  7. Android中实现滑动翻页—使用ViewFlipper(dp和px之间进行转换)

    Android中实现滑动翻页—使用ViewFlipper(dp和px之间进行转换) Android中dp和px之间进行转换 在xml布局文件中,我们既可以设置px,也可以设置dp(或者dip).一般情 ...

  8. spring mvc返回json字符串数据,只需要返回一个java bean对象就行,只要这个java bean 对象实现了序列化serializeable

    1.spring mvc返回json数据,只需要返回一个java bean对象就行,只要这个java bean 对象实现了序列化serializeable 2. @RequestMapping(val ...

  9. 用jackson包实现json、对象、Map之间的转换

    jackson API的使用 用jackson包实现json.对象.Map之间的转换

  10. atitit.XML类库选型及object 对象bean 跟json转换方案

    atitit.XML类库选型及object 对象bean 跟json转换方案 1. XML类库可以分成2大类.标准的.这些类库通常接口和实现都是分开的 1 2. 常见的xml方面的方法 2 2.1.  ...

随机推荐

  1. [VS工程技巧]远程调试工具及dump文件来检查程序崩溃及异常等问题

    做什么 之前有一次梦中所得,既然可以让vs附加到进程去调试活动的dll,那要是可以让我本地的电脑去调试别人客户端或者测试环境的DLL就好了,这样就可以不通过dbgview去一个个输出看,而是可以直接调 ...

  2. COM组件开发-关于在开发环境下COM组件的(来自 HRESULT 的异常:0x80080005 (CO_E_SERVER_EXEC_FAILURE)) 以及 在CLR语言下可能报错 未能加载文件或程序集“Interop.xxx 的问题

    1.关于在开发环境下COM组件的(来自 HRESULT 的异常:0x80080005 (CO_E_SERVER_EXEC_FAILURE)) 开发环境下,COM组件注册的文件 不一定是你自己现在程序调 ...

  3. fusionpbx简介

    概述 fusionpbx是以freeswitch作为底层框架开发而成的开源PBX,在freeswitch的基础上,优化了GUI的易用性. fusionpbx可用作高可用性的单租户或基于域的多租户 PB ...

  4. 浅谈 Docker 网络:单节点多容器

    1.同网段多容器访问 这一节将对 Docker 多容器网络进行讨论,构建容器网络示意图如下:

  5. 基于AHB_BUS Clac slave详解

    基于AHB-APB BUS slave详解 1.目录 高内聚:让模块的功能更集中,更单一. AMBA总线例子,需要有一个模块和AMBA进行交互,就可以单独将与AHB总线进行交互的部分作为一个模块.经常 ...

  6. JMS微服务开发示例(五)生成短token,实现用户无状态登录

    用户token,也可以利用第三方框架生成,JMS也包含了自己的token服务器. 部署TokenServer 到这里下载 tokenserver.zip,然后部署运行TokenServer. 微服务中 ...

  7. Go-数据类型-数字

    Go数字类型 整数 int 类 int(在32机器上为int32,在64位机器上为int64) int8 int16 int32 int64 unit类 uint(在32机器上为uint32,在64位 ...

  8. SQLServer命令行备份数据库

    SQLServer命令行备份数据库 背景 SQLServer on linux 想设置计划任务自动备份数据库 感觉sqlcmd应该是最简单快捷的方式了 所以进行一下处理. 安装必备软件 sudo cu ...

  9. [转帖]RHEL/CentOS 7中的网络暨network.service与NetworkManager.service详解

    在RHEL/CentOS 6及以前的版本中,网络功能是通过一系列网络相关的脚本文件实现,如/etc/init.d/network文件,及如下/sbin/if*文件等. [root@myserver ~ ...

  10. [转帖]Kafka-LEO和HW概念及更新流程

    https://www.cnblogs.com/youngchaolin/p/12641463.html 目录 LEO&HW基本概念 LEO&HW更新流程 LEO HW 更新流程示例分 ...