前言:当数据进行json转换时,当属性值为null时,json解析就会中断,导致接下来的数据无法正确获取。原则上来讲服务器端发送的json字符串不允许存在属性值为空的情况,但是如果服务器端发送了null的属性值,客户端也必须要解决。

这里举个今天遇到json转换null值的实例,在下面提一下

代码

Bean

Hr

public class Hr {
private Integer id;
private String name;
private String phone;
private String telephone;
private String address;
private Boolean enabled;
private String username;
private String password;
private String userface;
private String remark;
//防止null值,roles预先创建个List实例
private List<Role> roles = new ArrayList<>();
//get、set省略

Role

public class Role {
private Integer id;
private String name;
private String namezh;
//get、set省略
}

Controller

@RestController
@RequestMapping("/system/hr")
public class HrController {
@Autowired
HrService hrService;
@GetMapping("/")
public List<Hr> getAllHrs(Integer id){
return hrService.getAllHrs(id);
}
}

Service

@Service
public class HrService implements UserDetailsService {
@Resource
HrMapper hrMapper;
public List<Hr> getAllHrs(Integer id) {
return hrMapper.getAllHrs(id);
}
}

Mapper

java

public interface HrMapper {
List<Hr> getAllHrs(Integer id);
}

xml

<resultMap id="BaseResultMap" type="com.lwy.vhr.bean.Hr">
<id column="id" jdbcType="INTEGER" property="id" />
<result column="name" jdbcType="VARCHAR" property="name" />
<result column="phone" jdbcType="CHAR" property="phone" />
<result column="telephone" jdbcType="VARCHAR" property="telephone" />
<result column="address" jdbcType="VARCHAR" property="address" />
<result column="enabled" jdbcType="BIT" property="enabled" />
<result column="username" jdbcType="VARCHAR" property="username" />
<result column="password" jdbcType="VARCHAR" property="password" />
<result column="userface" jdbcType="VARCHAR" property="userface" />
<result column="remark" jdbcType="VARCHAR" property="remark" />
</resultMap> <resultMap id="BaseResultMap2" type="com.lwy.vhr.bean.Hr" extends="BaseResultMap">
<collection property="roles" ofType="com.lwy.vhr.bean.Role">
<id column="rid" property="id" jdbcType="INTEGER"/>
<result column="rname" property="name" jdbcType="VARCHAR"/>
<result column="rnameZh" property="namezh" jdbcType="CHAR"/>
</collection>
</resultMap>
<select id="getAllHrs" resultMap="BaseResultMap2">
select h.*,r.`id` as rid,r.`name` as ranme ,r.`nameZh` as rnameZh from hr h,hr_role hrr,role r where h.`id`=hrr.`hrid` and hrr.`rid`=r.`id` and h.`id`!=#{id}
</select>

数据库

测试

这里用Postman来进行测试

在这里出现了json转换失败的情况

处理

通过断点调试,从authorities这里打上断点进行debug调试

发现取值时出现了null值,然后回想起json对null值的处理时会停止执行,再搜寻着路径去查找原因。。。

总结:这里只是因为自己疏忽将原本有值的属性“变成”了null,在平时开发的时候也会有将原本为null值的属性通过json格式发送到前段做处理。这个时候只要把null值转换成" "空字符串就行了。(建议使用gson)

总结到这里,积累点点滴滴,一步一脚印,加油

json转换对象中出现null属性的解决方法的更多相关文章

  1. chorme浏览器不支持audio/video中的autoplay属性的解决方法

    在chrome 浏览器中输入:chrome://flags 再搜索audio,找到Autoplay policy 再在右侧的选项中设置为 no user gesture is required 即可

  2. js对象中动态读取属性值 动态属性值 js正则表达式全局替换

    $(document).ready(function(){ var exceptionMsg = '${exception.message }'; var exceptionstr = ''; //j ...

  3. C# json反序列化 对象中嵌套数组 (转载) 可能会导致循环或多重级联路径。请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。

    C# json反序列化 对象中嵌套数组 (转载)   看图: 这里可以看到是二层嵌套!!使用C#如何实现?? 思路:使用list集合实现 → 建立类 → list集合 → 微软的   Newtonso ...

  4. Stream流用于按照对象中某一属性来对集合去重+简单数据类型集合的去重

    上次对Stream流来进行分组的文章很多人看,想看的可以来这: Stream流来进行集合分组 这次小编又带来Stream的去重,话不多数,直接上代码: 这是对简单数据类型的去重 //字符串集合进行简单 ...

  5. 在实体对象中访问导航属性里的属性值出现异常“There is already an open DataReader associated with this Command which must be closed first”

    在实体对象中访问导航属性里的属性值出现异常“There is already an open DataReader associated with this Command which must be ...

  6. JavaScript的事件对象中的特殊属性和方法(鼠标,键盘)

    鼠标操作导致的事件对象中的特殊属性和方法 鼠标事件是 Web 上面最常用的一类事件,毕竟鼠标还是最主要的定位设备.那么通过事件对象可以获取到鼠标按钮信息和屏幕坐标获取等 鼠标按钮 只有在主鼠标按钮被单 ...

  7. C++:调整基类成员在派生类中的访问属性的其他方法(同名成员和访问声明)

    4.3 调整基类成员在派生类中的访问属性的其他方法 4.3.1 同名函数 在定义派生类的时候,C++语言允许在派生类中说明的成员与基类中的成员名字相同,也就是 说,派生类可以重新说明与基类成员同名的成 ...

  8. C#利用反射来判断对象是否包含某个属性的实现方法

    本文实例展示了C#利用反射来判断对象是否包含某个属性的实现方法,对于C#程序设计人员来说有一定的学习借鉴价值. 具体实现代码如下: /// <summary> /// 利用反射来判断对象是 ...

  9. @NamedEntityGraphs --JPA按实体类对象参数中的字段排序问题得解决方法

    JPA按实体类对象参数中的字段排序问题得解决方法@Entity @Table(name="complaints") @NamedEntityGraphs({ @NamedEntit ...

随机推荐

  1. Redhat Linux 配置Xmanager

    1. vi /etc/inittab id:5:initdefault:  //设置系统运行级为5,如果本来就是5就无需修改 id:5:respawn:/usr/sbin/gdm    //添加到最后 ...

  2. ZOL 3977. Pointers

    太久没有做 zoj,对 oj 来说,由于它高度的”黑盒性“(输入数据和答案完全保密),保护自信心是非常重要的.所以我先选择一道非常简单的题目刷起.本题目是一个相当简单的题目,难度系数和求 A+B 相当 ...

  3. 在Spring Boot中使用 @ConfigurationProperties 注解

    但 Spring Boot 提供了另一种方式 ,能够根据类型校验和管理application中的bean. 这里会介绍如何使用@ConfigurationProperties.继续使用mail做例子. ...

  4. Angular:在应用初始化时运行代码

    想象一下,您的应用需要一些动态配置信息,这些信息在应用启动之前需要动态获取,并在应用运行中使用. 显然不能直接写道静态配置文件中,但是从客户端发出的请求又是一个异步请求,如何协调这个问题呢? 这里,我 ...

  5. C# 使用缓存数据模拟抢购

      在所有的电商网站中,不乏大量的抢购,比如双十一,双十二等等,作为一名开发人员考虑最多的就是多并发以及高并发 废话少说,开始写代码.我用了C#的MemoryCache代替试下流行的各种缓存 商品测试 ...

  6. leetcode每日刷题计划-简单篇day4

    腰酸腿疼肝数模 被教育说代码风格像是小学生而且有点冗余 QAQ之前面试官好像也说过orz努力改努力改 今天把前两天跳过的vector给简单看了一下补上了 Num 14 最长公共前缀 Longest C ...

  7. 模拟登录,发送amf类型数据

    参考 http://blog.csdn.net/amandag/article/details/5666219 以及 稍微修改了一下AMFPost的类     一.登录 登录过程中主要用到标红的3个请 ...

  8. python中os.path模块简介

    1.python中获取当前工作目录 curDir = os.getcwd() os.getcwd()返回的是执行命令时所在的目录,而不是脚本本身所在的目录 2.os.path os.path.absp ...

  9. Echarts修改提示框及自定义提示框内容

    1:首先先定义自定义的json数据 var msg = [{ 'tell':'110', 'ContentMessage':"我今天去吃大餐" },{ 'tell':'111', ...

  10. Rsync备份功能总结

    备份服务笔记====================================================================== Rsync是一款开源的.快速的.多功能的.可实 ...