如何解析JSON字符串?

1、复杂不明结构JSON需要解析为对象并获取修改对应值

2、需要方案将JSON数据转换成ArkTS中类的实例对象,要求可以使用实例对象的属性,调用实例对象的方法,包括嵌套对象的场景。尝试使用 JSON 的 stringify 和 parse 方法,如链接,但是 ArkTS 中会限制使用 eval 函数,该方法不可行。

HarmonyOS
2024-05-23 22:38:42
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
xcbaby

1、复杂不明结构JSON需要解析为对象并获取修改对应值

通过ESObject接收parse出的JSON。

let userResp:ESObject = { 
  nickname: "一个很长的名字", 
  avatar: "https://www.baidu.com/" 
} 
let data:ESObject = { 
  roomId: "823688", 
  nativeUrl: "native://enterLiveRoom?RoomId=823688", 
  status: "1", 
  userResp: [ 
    userResp 
  ] 
} 
let jsonObj:ESObject= { 
  reqId: "2b2258ae54e3101a", 
  code: 0, 
  msg: "success", 
  data:data 
} 
let json:string = JSON.stringify(jsonObj) 
  
let test:ESObject = JSON.parse(json) 
console.info(test.msg) 
console.info(test.data.userResp[0].nickname)

2、基于class-transformer的JSON数据转换成类实例对象的实

  • 安装/引入三方库
ohpm install class-transformer 
ohpm install reflect-metadata 
import { Type, plainToClass } from 'class-transformer' 
import "reflect-metadata"
  • 定义JSON数据
let testJSON: Record<string, ESObject> = { 
  'id': 1, 
  'firstName': "Johny", 
  'lastName': "Cage", 
  'age': 27, 
  'arr': [ 
    { 
      'name': 'john' 
    }, 
    { 
      'name': 'tom' 
    } 
  ], 
  'instanceA': { 
    'name': 'john' 
  }, 
}
  • 定义class对象Class A
class A { 
  name: string = 'john'; 
  
  getName(): string { 
    return this.name; 
  } 
}

Class User

// 当尝试转换具有嵌套对象的对象时,需要知道要转换的对象类型,使用@Type装饰器隐式地指定每个属性包含的对象类型 
class User { 
  id: number = 0; 
  firstName: string = ''; 
  lastName: string = ''; 
  age: number = 0; 
  
  @Type(() => A) 
  arr: A[] = [new A()] 
  
  @Type(() => A) 
  instanceA: A = new A(); 
  
  getName() { 
    return this.firstName + " " + this.lastName; 
  } 
  
  isAdult() { 
    return this.age > 36 && this.age < 60; 
  } 
}
  • 转换结果
const instance = plainToClass(User, testJSON)

分享
微博
QQ
微信
回复
2024-05-24 22:13:55
相关问题
HarmonyOS 如何解析json字符串
75浏览 • 1回复 待解决
嵌套JSON字符串解析问题
1859浏览 • 1回复 待解决
HarmonyOS 服务端JSON字符串解析问题
391浏览 • 1回复 待解决
如何打印JSON对象和JSON字符串
214浏览 • 1回复 待解决
如何实现Map转JSON字符串
980浏览 • 1回复 待解决
如何将对象转为JSON字符串
390浏览 • 1回复 待解决
如何JSON字符串转为Map
214浏览 • 1回复 待解决
如何JSON字符串转Class对象
305浏览 • 1回复 待解决
怎么动态组装一个json字符串
80浏览 • 1回复 待解决
如何JSON字符串转Class对象数组?
341浏览 • 1回复 待解决
检查字符串是否以给定的字符串开头
360浏览 • 1回复 待解决
字符串如何转为ArrayBuffer?
407浏览 • 1回复 待解决