HarmonyOS 鸿蒙Next 网络请求返回来的是JSON格式的数据,不知道如何使用这些数据,输出来都是 undefined

HarmonyOS 鸿蒙Next 网络请求返回来的是JSON格式的数据,不知道如何使用这些数据,输出来都是 undefined ETS开发

我向服务器发送请求,服务器返回的是json格式的数据,例如:

console.info(JSON.stringify(data.result))

输出的数据为: app Log: "{\"inf\":\"ok\",\"y\":true}"

服务器后台设置的返回数据为json 格式 我不清楚data.result 来的数据是什么格式,我尝试使用 data.result.inf 取出数据 但是在IDE中就报错

报错内容:Property ‘inf’ does not exist on type ‘string | Object | ArrayBuffer’. Property ‘inf’ does not exist on type ‘string’. <tsCheck>

因为将data.result 转为字符串能正常输出,所以我尝试把字符串给转成对象

JSON.parse(JSON.stringify(data.result))

输出的结果是:

app Log: {"inf":"ok","y":true}

那么我再输出里面的内容但是直接提示 undefined 如下:

let dataString = JSON.stringify(data.result);
let dataJson = JSON.parse(dataString)
console.info(dataJson)
console.info(dataJson.inf)

app Log: {"inf":"ok","y":true}

app Log: undefined

还有个问题就是

extraData: {
  "tel": this.tel,
  "pass": this.passWord
}

数据提交上去是空的,什么都没有,确定this.tel 和 this.passWord 是有值的

不知道这是哪里的问题,我是0基础来学习这个鸿蒙开发的,之前有小程序的开发经验。希望大神解答一下我的疑惑,测试方式为真机mate 40E 后台使用apache php


更多关于HarmonyOS 鸿蒙Next 网络请求返回来的是JSON格式的数据,不知道如何使用这些数据,输出来都是 undefined的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

定义一个数据类匹配返回的JSON数据

class DataSet{
    inf:string
    y:boolean
}

dataresult:DataSet
this.dataresult=JSON.parse(data.result.toString())

console.info(this.dataresult.inf)

更多关于HarmonyOS 鸿蒙Next 网络请求返回来的是JSON格式的数据,不知道如何使用这些数据,输出来都是 undefined的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


谢谢您的方法可用,我之前遇到的问题 后来我才发现是因为构建的设备混乱造成 日志输出的不是测试设备,重新签名后构建就好了,另外 那个参数没传上去不知道什么原因

httpRequest.on('headersReceive', (header) => {
    console.info('header: ' + JSON.stringify(header));
});

这个信息 在某一次的时候 输出过 后来 就 没有了, 直接输出 header:null

能说说如何重新签名的吗
我也遇到了楼主类似问题,

在HarmonyOS(鸿蒙)开发中,如果你从网络请求接收到JSON格式的数据,但输出显示为undefined,这通常意味着你没有正确地解析JSON数据。以下是如何在鸿蒙系统中处理JSON数据的步骤:

  1. 确保数据接收正确:首先,验证你确实从网络请求中收到了JSON格式的响应。可以通过打印原始响应字符串来检查。

  2. 解析JSON数据:鸿蒙系统提供了JSON解析的API。你可以使用JsonUtil类来解析JSON字符串。例如:

    std::string jsonString = "..."; // 你的JSON字符串
    JsonValue jsonValue = JsonUtil::ParseJsonString(jsonString);
    
    // 访问JSON对象中的数据
    if (jsonValue.IsObject()) {
        JsonObject jsonObject = jsonValue.GetObject();
        std::string someData = jsonObject.GetString("someKey");
        // 使用someData
    }
    
  3. 检查键名是否正确:确保你访问的键名与JSON字符串中的键名完全匹配。

  4. 数据类型匹配:确保你访问数据时使用的方法与JSON中数据的实际类型相匹配(如GetString、GetInt等)。

如果遵循上述步骤后问题依旧存在,可能是JSON字符串格式错误或解析过程中有其他问题。此时,请检查JSON字符串的有效性,并确认解析代码无误。

如果问题依旧没法解决请联系官网客服, 官网地址是 https://www.itying.com/category-93-b0.html

回到顶部