Closed gxmanito closed 2 months ago
用 SQL 函数 ifnull "@column":"id;ifnull(type,0):type"
或者写 APIJSON 远程函数并调用: "type()":"getWithDefault(type,0)"
单个字段为空可以这样,如果DeviceType查询不到数据时,连DeviceType:{} 都不会返回的,只有 code码、msg等信息
对象内只要有一个字段不为 null,就会返回这个对象,简单试试就知道的事情,先试了再说
我试过了,项目中自己在使用了,对象内只要有一个字段不为 null,确实会返回这个对象,但是如果所有字段都是null,整个对象就不返回了,前端反映要求把整个对象字段都要返回,只不过每个字段都是null或者空字符串
这个要求很不合理,一般用传统方式也一样是对象内没有有效字段就不返回整个对象的。 前端应该自己判空,不能依赖后端传这种无效数据,否则不方便判断 是 查不到值 还是 查到值但为 null, 本来 if (对象 != null) { // UI 绑定数据逻辑 } 就可以简单判断,现在要先拿到对象,再对比里面的具体值来判断了。
而且按这种做法,一般几层嵌套的数据,会返回大量无效的数据,还浪费带宽和流量,减慢传输速度。
{
"Comment": {
"id": null,
"userId": null,
"content": ""
...
},
"User": {
"id": null,
"name": "",
"contactIdList": [],
"pictureList": []
...
},
"Comment:reply": {
"id": 0,
"userId": 0,
"content": ""
},
"User:reply": {
"id": 0,
"name": "",
"contactIdList": [],
"pictureList": []
},
...
"ok": true,
"code": 200,
"msg": "success"
}
这还只是单层,想想多层嵌套得多恶心
你说的确实有道理,那我再和前段沟通一下,如果单个字段为空也需要返回的话,除了ifnull函数和远程函数之外我是否可以全局设置直接改fastjson序列化方式,为空也返回呢
打算在这改返回值的,但是这个方法返回的是JSONObject,fastjson又没有方法可以指定返回值是JSONObject类型的序列化方法,所以目前没找到好的方式来设置出参序列化方式
可以设置 fastjson 返回 null,但 parseResponse 返回的类型是 JSONObject,明显不能这样,改 parse 方法就行。 或者每个万能通用接口 Controller 的方法处理下
APIJSON Version/APIJSON 版本号
6.1.0
Database Type & Version/数据库类型及版本号
MySQL8
Environment/环境信息
APIAuto Screenshots/APIAuto 请求与结果完整截屏
有数据正常返回 查询不到数据时,期望返回每个key,而不是像这样什么都不返回
Current Behavior/问题描述
Expected Behavior/期望结果
No response
Any additional comments?/其它补充说明?
No response