OpenHarmony开发者论坛

标题: ArkTS语法中多层实体类嵌套的对象转JSON结构,嵌套的引用JSON丢失问题 [打印本页]

作者: chmchen    时间: 2024-4-12 15:53
标题: ArkTS语法中多层实体类嵌套的对象转JSON结构,嵌套的引用JSON丢失问题
[md]```
//有以下实体类
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":{}}


```
[/md]
作者: hyacinth养花人    时间: 2024-4-12 18:53
JSON.stringify 本来就是这样的啊。JSON.stringify()将值转换为相应的 JSON 格式,JSON 格式本身并不支持直接表示 HashMap  结构。

可以看下class-transformer这个三方库https://ohpm.openharmony.cn/#/cn/detail/class-transformer
作者: chmchen    时间: 2024-4-15 10:02
回复 hyacinth养花人: @Type(() => Photo)
嵌套对象或者map使用这个直接闪退
作者: hyacinth养花人    时间: 2024-6-5 14:29
回复 chmchen: API11以上要配合reflect-metadata库一起使用




欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/) Powered by Discuz! X3.5