HarmonyOS JSON转对象失败?

在使用JSON基础API的时候发现,JSON转换失败

示例如下:

let str = `{"switchConfig":[{"name":"bizLine","status":1,"configVal":"{\"bizType\":\"1\",\"desc\":\"一课直播通用\"}"}]}`


static isJSONStr(str: string): boolean {
  try {
    JSON.parse(str);
    return true;
  } catch (error) {
    return false;
  }
}

对于这样的JSON字符串转对象需要如何处理

阅读 499
1 个回答

对于多层嵌套的json数据,可以采用reflect-metadata(参考文档:https://gitee.com/openharmony-tpc/openharmony\_tpc\_samples/tree/master/reflect-metadata)和class-transformer(参考文档:https://gitee.com/openharmony-tpc/openharmony\_tpc\_samples/tree/master/class-transformer\#%E7%BA%A6%E6%9D%9F%E4%B8%8E%E9%99%90%E5%88%B6)来解决。以下是参考demo:

import { Type, plainToClass } from 'class-transformer'
import 'reflect-metadata'

class ResponseObj {
  @Type (() => SwitchConfigItem)
  switchConfig: SwitchConfigItem[] = [];
}

export class SwitchConfigItem {
  name: string = ''
  status: number = 1
  configVal: string = ''
}
@Entry
@Component
struct transFormer {
  aboutToAppear(): void {
    let str:Record<string,ESObject> = {"switchConfig":[{"name":"bizLine","status":1,"configVal":"{\"bizType\":\"1\",\"desc\":\"一课直播通用\"}"}]}
    let strObj:ResponseObj = plainToClass(ResponseObj,str);
    let configValJSON = strObj.switchConfig[0].configVal;
    console.log(`asasd:${strObj.switchConfig[0].status}`)
    console.log(`configValJSON:`,configValJSON)
    console.log(`configValJSON1:`,JSON.parse(configValJSON).desc)
  }
  build() {
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
logo
HarmonyOS
子站问答
访问
宣传栏