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
3 回复

你解决了吗 我也遇到这问题了


我也遇到这个问题,怎么解决?
“Message”: “出现错误。”, “ExceptionMessage”: “未将对象引用设置到对象的实例。”, “ExceptionType”: “System.NullReferenceException”,

uni-app 中使用 uni.request 进行网络请求时,如果服务器返回的 JSON 数据中包含 null 值,可能会导致某些字段在接收时无法正确解析或显示。这是因为 null 在 JavaScript 中被视为一个特殊的值,可能会导致某些操作失败或产生意外结果。

解决方法

  1. 检查服务器返回的数据: 确保服务器返回的 JSON 数据格式正确,并且 null 值是你期望的。如果 null 值不是必需的,可以考虑在服务器端将其替换为其他默认值(如空字符串 ""0)。

  2. 在客户端处理 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);
        }
    });
  3. 使用默认值: 在访问数据时,可以使用逻辑或运算符 || 来提供默认值,以防止 null 值导致的问题。

    let value = data.someField || 'default value';
  4. 使用可选链操作符: 如果你使用的是较新的 JavaScript 版本(ES2020+),可以使用可选链操作符 ?. 来安全地访问可能为 nullundefined 的属性。

    let value = data?.someField || 'default value';
  5. 使用 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);
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!