HarmonyOS 数据解析

网络请求回来的json字符串,如何转成bean类,有没有工具类或者相关接口,json如何快捷转化为bean类。

HarmonyOS
2024-12-25 11:35:46
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
put_get

HarmonyOS目前未提供通过json结构生成bean文件的方法,devEco的插件市场也未提供相应的插件,当前需要手动编写相应bean文件。如果是本地json文件转成object对象,简单示例代码如下:

// Index.ets
import { Context } from '@ohos.abilityAccessCtrl';
import buffer from '@ohos.buffer';
import { JsonBean } from '../model/JsonBean';

@Entry
@Component
struct Index {
  private context: Context = getContext(this);
  private str: string = ''

  getRawFile(): ESObject {
    //调用getRawFileContent接口获取json文件内容,并读为string
    getContext(this).resourceManager.getRawFileContent("data.json", (err, data) => {
      try {
        this.str = buffer.from(data.buffer).toString();
        console.info(JSON.stringify(this.str))
      } catch (e) {
        console.info(JSON.stringify(e))
      }
    })
    //也可以调用getRawFileContentSync接口获取json文件内容,并读为string
    try {
      let data: Uint8Array = this.context.resourceManager.getRawFileContentSync("data.json");
      this.str = buffer.from(data.buffer).toString();
    } catch (e) {
      console.info(JSON.stringify(e))
    }
    // string转为JsonBean
    let obj: JsonBean = JSON.parse(this.str)
    console.info(obj.name);
    console.info(obj.age);
    console.info(obj.area);
    return obj
  }

  build() {
    Column() {
      Button("get")
        .onClick(() => {
          this.getRawFile()
        })
    }.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.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.

data.json文件是存放路径entry-src-main-resources-rawfile-data.json。data.json 文件:

{
  "name": "john",
  "area": "nanjing",
  "age": "22"
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

JsonBean文件存放路径entry-src-main-ets-model-JsonBean.ets。

// JsonBean.ets
export interface JsonBean {
  name: string;
  area: string;
  age: string;
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

class也可以,class多用于定义对象的属性和方法,interface多用于定义行为,可以支持多继承。根据实际需要选择。json数据多层可以参考如下方式定义class:

export class Tabs {
  company_id: number = 0;
  date: string = '';
  message: number = 0;
  type: string = '';
}

export class current_company {
  Tabs: Tabs[] = [];
  version: number = 0;
}

export class companys {
  company_id: number = 0;
}

export class data {
  companys: companys = new companys();
  current_company: current_company = new current_company();
  have_encryption: boolean = false;
  ret: number = 0;
  time: string = '';
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
分享
微博
QQ
微信
回复
2024-12-25 13:45:17
相关问题
HarmonyOS JSON数据解析问题
469浏览 • 1回复 待解决
HarmonyOS 网络请求结果数据解析
306浏览 • 1回复 待解决
如何对JSON数据进行解析优化
1192浏览 • 1回复 待解决
HarmonyOS ArkTS和h5的数据解析
486浏览 • 1回复 待解决
json解析对象后获取数据返回undefined。
1316浏览 • 1回复 待解决
xml文件数据解析 ,都有哪些步骤?
1196浏览 • 1回复 待解决
解析和操作ASN.1数据的工具
1898浏览 • 1回复 待解决
HarmonyOS json 解析
423浏览 • 1回复 待解决
HarmonyOS Map解析
267浏览 • 0回复 待解决
HarmonyOS xml解析失败
249浏览 • 1回复 待解决
HarmonyOS xml解析异常
375浏览 • 1回复 待解决
HarmonyOS 地址解析问题
378浏览 • 1回复 待解决