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  
}

如何拿到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%')  
  }  
}

可以使用正则表达式去解析后端返回的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%')  
  }  
}
分享
微博
QQ
微信
回复
2024-10-09 17:42:35
相关问题
MenuItemicon图标怎么颜色
2161浏览 • 1回复 待解决
HarmonyOS interface 问题
175浏览 • 1回复 待解决
HarmonyOS 关于interface使用
772浏览 • 1回复 待解决
ArkUI转场动画可以颜色
1815浏览 • 1回复 待解决
怎么通知上图标有知道?
4148浏览 • 1回复 待解决
数组map函数, 如何返回interface
116浏览 • 1回复 待解决
interface如何间接导出
792浏览 • 1回复 待解决
组件有没有支持事件穿透属性
1679浏览 • 1回复 待解决
interface回调如何调用
818浏览 • 1回复 待解决
如何判断对象是某个interface实现
932浏览 • 1回复 待解决
提问
该提问已有0人参与 ,帮助了0人