HarmonyOS interface里的属性支持改别名吗?

现在需要json转model,需要对json里的键名重命名一下。现在后端返回的json里有个key是数字开头的,现在要解析成属性,属性不能数字开头,如何把这个字段解析出来。

后端json:

{  
    "code": 0,  
    "data": {  
        "play_info": {  
            "720p": {  
                "definition": "720P",  
                "size": 356729382,  
                "cdn_list": []  
            }  
        },  
        "video_id": "207906013",  
        "timestamp": "1537442937"  
    },  
    "msg": "",  
    "ts": 1716449323  
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.

如何拿到data.play_info.720p?

HarmonyOS
2024-10-09 12:11:16
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
Heiang

参考如下demo取出data.play_info.720p:

import { promptAction } from '@kit.ArkUI';  
@Entry  
@Component  
struct Index2 {  
  @State message: string = 'Hello World';  
  @State jsonStr: string =  
    '{"code": 0,"data": { "play_info": { "720p": { "definition": "720P","size": 356729382,"cdn_list": [] } },"video_id": "207906013","timestamp": "xxxx" },"msg": "","ts": 1716449323}'  
  parse(st: string) {  
    let list = JSON.parse(st) as Record<string, string>  
    console.log('list:' + JSON.stringify(list))  
    console.log('720p:' + JSON.stringify(list['data']['play_info']['720p']))  
  }  
  build() {  
    Column() {  
      Button('点击一下').onClick(() => {  
        this.parse(this.jsonStr)  
        promptAction.showToast({ message: '方法已执行' })  
      })  
    }  
    .justifyContent(FlexAlign.Center)  
    .height('100%')  
    .width('100%')  
  }  
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.

可以使用正则表达式去解析后端返回的json字符串,将字符串中的字段720p替换成合适的变量名称如"authType",然后再执行相应的plainToClass,参考demo如下:

@Entry  
@Component  
struct Index2 {  
  @State jsonStr: string =  
    '{"code": 0,"data": { "play_info": { "720p": { "definition": "720P","size": 356729382,"cdn_list": [] } },"video_id": "207906013","timestamp": "xxx" },"msg": "","ts": 1716449323}'  
  parse2(){  
    let reg = new RegExp("720p",'g');  
    let resAll = this.jsonStr.replace(reg,"authType")  
    console.log('resAll:' + resAll)  
    promptAction.showToast({message:`处理后的字符串为:${resAll}`})  
  }  
  build() {  
    Column() {  
      Button('点击一下').onClick(() => {  
        this.parse2()  
      })  
    }  
    .justifyContent(FlexAlign.Center)  
    .height('100%')  
    .width('100%')  
  }  
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
分享
微博
QQ
微信
回复
2024-10-09 17:42:35
相关问题
HarmonyOS 方法interface,实现问题
623浏览 • 2回复 待解决
MenuItemicon图标怎么颜色
3083浏览 • 1回复 待解决
HarmonyOS 路由动画没办法
445浏览 • 1回复 待解决
ArkUI转场动画可以颜色
2794浏览 • 1回复 待解决
动态切换主题要每个组件
258浏览 • 1回复 待解决
HarmonyOS interface 问题
902浏览 • 1回复 待解决
怎么通知上图标有知道?
5154浏览 • 1回复 待解决
HarmonyOS 关于interface使用
1653浏览 • 1回复 待解决
HarmonyOS Navigation导航子页面别名设置
826浏览 • 1回复 待解决
数组map函数, 如何返回interface
858浏览 • 1回复 待解决