json查询数据字段不存在

/ Markbug / 没有评论 / 425浏览

今天在项目提测时,遇到了一个问题,就是新添加的数据库字段在测试服务器中的接口中没有查询到该字段,结果导致,部分服务报错。导致这个问题的原因是因需求改动,于是在数据库中添加了几个新字段,然后在接口中返回了新增加的字段,但没有对原先的老数据做兼容,于是就导致了上述问题。为什么老数据会影响原先的接口调用呢?这是因为公司技术架构采用的是json方式传输的,移动端调用后台接口服务时,后台默认返回的是json格式。当我们在数据库中添加新字段时,数据库会默认将老数据中的该字段设置为null,(注意null并不是空字符串)又因为json在传输时,如果该属性为null,则自动会删除掉,该key,于是就出现了上述问题。解决的办法就是将数据库中老数据中的null字段修改为空字符串即可。

下面测试用例演示的就是当json中如果key的value为null时会自动删除掉该key。

@Test
public void test() {
JSONObject jsonObject = new JSONObject();
jsonObject.put("username","admin");
jsonObject.put("password","jilinwula");
System.out.println(String.format("old json: %s", jsonObject));
jsonObject.put("password", null);
System.out.println(String.format("new1 json: %s", jsonObject));
jsonObject.put("password", "");
System.out.println(String.format("new2 json: %s", jsonObject));
}
old json: {"password":"jilinwula","username":"admin"}
new1 json: {"username":"admin"}
new2 json: {"password":"","username":"admin"}