• Lv0
    粉丝0

积分22 / 贡献0

提问2答案被采纳0文章0

ArkTS语法中多层实体类嵌套的对象转JSON结构,嵌套的引用JSON丢失问题

chmchen 显示全部楼层 发表于 2024-4-12 15:53:24
//有以下实体类
DataInfoA.ets
export class DataInfoA {
  public nameA: string = '';
  public mapB: HashMap<string, DataInfoB> = new HashMap();
}

DataInfoB.ets
export class DataInfoB {
  public nameB: string = '';
  public mapC: HashMap<string, DataInfoC> = new HashMap();
}

DataInfoC.ets
export class DataInfoC {
  public nameC: string = '';
  public exct: ArrayList<string> = new ArrayList()
}
//数据填充
let dataInfoA: DataInfoA = new DataInfoA()
dataInfoA.nameA = "dataInfoA"
let dataInfoB: DataInfoB = new DataInfoB()
dataInfoB.nameB = "dataInfoB"
let dataInfoC: DataInfoC = new DataInfoC()
dataInfoC.nameC = "dataInfoC"
dataInfoC.exct.add("dataInfoC-exct")
dataInfoA.mapB.set(dataInfoB.nameB, dataInfoB)
dataInfoB.mapC.set(dataInfoC.nameC, dataInfoC)
//转JSON结构
let DataInfoJson = JSON.stringify(dataInfoA)
   LogUtils.warn(CommonConstants.TAG_COMMON_UTILS, 'DataInfoJson ===> ' + DataInfoJson);

log输出

Index-Test, DataInfoJson ===> {"nameA":"dataInfoA","mapB":{}}

您尚未登录,无法参与评论,登录后可以:
参与开源共建问题交流
认同或收藏高质量问答
获取积分成为开源共建先驱

精彩评论3

hyacinth养花人

沙发 发表于 2024-4-12 18:53:36
JSON.stringify 本来就是这样的啊。JSON.stringify()将值转换为相应的 JSON 格式,JSON 格式本身并不支持直接表示 HashMap  结构。

可以看下class-transformer这个三方库https://ohpm.openharmony.cn/#/cn/detail/class-transformer

chmchen

发表于 2024-4-15 10:02  IP属地: 广东省广州市

回复 hyacinth养花人: @Type(() => Photo)
嵌套对象或者map使用这个直接闪退

hyacinth养花人

发表于 2024-6-5 14:29  IP属地: 广东省广州市

回复 chmchen: API11以上要配合reflect-metadata库一起使用

【2 条回复】

Copyright   ©2023  OpenHarmony开发者论坛  京ICP备2020036654号-3 |技术支持 Discuz!

返回顶部