uni-app uni.request 网络请求 服务器返回json数据字段中有null 导致接收不到数据
uni-app uni.request 网络请求 服务器返回json数据字段中有null 导致接收不到数据
操作步骤:
1
预期结果:
1
实际结果:
1
bug描述:
[uni-app] uni.request 网络请求 服务器返回json数据字段中有null 就接收不到数据!
服务器查找数据库有的字段是null ,uni.request 网络请求接收不到数据 ,也不报错!
```json
{"code":0,"data":[{"id":1,"text":null},{"id":2,"text":"hi"}]}
信息类别 | 信息内容 |
---|---|
产品分类 | uniapp/App |
PC开发环境 | Windows |
PC操作系统版本 | win10 |
HBuilderX类型 | 正式 |
HBuilderX版本 | 3.4.7 |
手机系统 | Android |
手机系统版本 | Android 10 |
手机机型 | im |
页面类型 | vue |
vue版本 | vue2 |
打包方式 | 云端 |
项目创建方式 | HBuilderX |
你解决了吗 我也遇到这问题了
我也遇到这个问题,怎么解决?
“Message”: “出现错误。”,
“ExceptionMessage”: “未将对象引用设置到对象的实例。”,
“ExceptionType”: “System.NullReferenceException”,
在 uni-app
中使用 uni.request
进行网络请求时,如果服务器返回的 JSON 数据中包含 null
值,可能会导致某些字段在接收时无法正确解析或显示。这是因为 null
在 JavaScript 中被视为一个特殊的值,可能会导致某些操作失败或产生意外结果。
解决方法
-
检查服务器返回的数据: 确保服务器返回的 JSON 数据格式正确,并且
null
值是你期望的。如果null
值不是必需的,可以考虑在服务器端将其替换为其他默认值(如空字符串""
或0
)。 -
在客户端处理
null
值: 在接收到数据后,可以在客户端对null
值进行处理,将其替换为默认值或其他合适的值。uni.request({ url: 'https://example.com/api/data', method: 'GET', success: (res) => { let data = res.data; // 处理 null 值 for (let key in data) { if (data[key] === null) { data[key] = ''; // 或者其他默认值 } } console.log(data); }, fail: (err) => { console.error(err); } });
-
使用默认值: 在访问数据时,可以使用逻辑或运算符
||
来提供默认值,以防止null
值导致的问题。let value = data.someField || 'default value';
-
使用可选链操作符: 如果你使用的是较新的 JavaScript 版本(ES2020+),可以使用可选链操作符
?.
来安全地访问可能为null
或undefined
的属性。let value = data?.someField || 'default value';
-
使用 JSON.parse 的 reviver 函数: 如果你在解析 JSON 字符串时使用
JSON.parse
,可以通过reviver
函数来处理null
值。let jsonString = '{"someField": null}'; let data = JSON.parse(jsonString, (key, value) => { return value === null ? '' : value; // 将 null 替换为默认值 }); console.log(data);