HarmonyOS ArkTS如何解构对象

如下代码:

private handleRequstSuccess<T extends NetBasicRsp>(res: AxiosResponse, successHandler: (rsp: T) => void): void {
   let rsp: T = res.data as T
   rsp.responseStatusCode = res.status
   rsp.responseCookies = res.headers['set-cookie']
   rsp.responseHeader = res.headers
   let test = JSON.stringify(res.data)  // 报错,循环引用
 }

在网络请求回调中,需要根据AxiosResponse对象的转换成自定义的NetBasicRsp对象,但转换后进行JSON转换时报循环引用错误,主要是rsp.responseHeader = res.headers这行代码导致循环引用,这里需要将res.headers对象解构出来赋值给 rsp.responseHeader对象(深拷贝)。请问在ArkTS中如何正确的实现此功能?

HarmonyOS
2024-12-27 14:21:51
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
shlp

这个是序列化时遇到循环引用的问题,目前可通过主动检测到存在重复时,忽略处理去解决。

可参考以下代码:

// 有如下3个接口
export interface A {
  id: number;
  name: string;
  c?: C;
}
export interface B {
  a: A;
}
export interface C {
  b: B;
}
@Entry
@Component
struct  Page1 {
  build() {
    Column() {
      Button('test loop link')
        .onClick(() => {
          //构造循环引用样例
          let a1: A = {
            id: 100,name:'hello1'
          }
          let b1: B =  {
            a: a1
          }
          let c1: C = {
            b: b1
          }
          a1.c = c1;
          // 以下为解决方案
          const seen = new WeakSet();
          let strC: string = JSON.stringify(c1,(key: string,value: object) => {
            if (typeof value === "object" && value !== null) {
              if (seen.has(value)) {
                return ;
              }
              seen.add(value);
            }
            return value;
          });
          console.info(`DZG strC: ${strC}`)
        })
    }
  }
}
分享
微博
QQ
微信
回复
2024-12-27 17:32:01
相关问题
如何实现解构及Obejct.assign?
1213浏览 • 1回复 待解决
HarmonyOS ArkTS如何循环遍历对象
447浏览 • 1回复 待解决
ArkTS对象绑定的C++对象如何回收?
1278浏览 • 1回复 待解决
如何ArkTS中合并对象
1387浏览 • 1回复 待解决
HarmonyOS 后续是否会支持解构赋值
429浏览 • 1回复 待解决
如何ArkTS中合并对象
1946浏览 • 1回复 待解决
如何在Native侧释放ArkTS对象
2726浏览 • 1回复 待解决
ArkTs如何获取对象的类名
3058浏览 • 1回复 待解决
ArkTS如何实现对象的深拷贝?
1030浏览 • 1回复 待解决
HarmonyOS Native 实例化 ArkTS 对象
703浏览 • 1回复 待解决
如何在C/C++ 创建ArkTS对象
2810浏览 • 1回复 待解决
ArkTS如何使用字典类型的对象
587浏览 • 1回复 待解决
ArkTS如何自定义数组对象的排序规则
447浏览 • 1回复 待解决
json如何ArkTS中解析到Array对象中?
561浏览 • 2回复 待解决
如何在Native侧构建一个ArkTS对象
2639浏览 • 1回复 待解决