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%')
  }
}

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

{
  "name": "john",
  "area": "nanjing",
  "age": "22"
}

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

// JsonBean.ets
export interface JsonBean {
  name: string;
  area: string;
  age: string;
}

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 = '';
}
分享
微博
QQ
微信
回复
2024-12-25 13:45:17
相关问题
HarmonyOS JSON数据解析问题
256浏览 • 1回复 待解决
HarmonyOS 网络请求结果数据解析
110浏览 • 1回复 待解决
如何对JSON数据进行解析优化
1094浏览 • 1回复 待解决
HarmonyOS ArkTS和h5的数据解析
297浏览 • 1回复 待解决
xml文件数据解析 ,都有哪些步骤?
1054浏览 • 1回复 待解决
json解析对象后获取数据返回undefined。
1115浏览 • 1回复 待解决
解析和操作ASN.1数据的工具
1765浏览 • 1回复 待解决
HarmonyOS Map解析
190浏览 • 0回复 待解决
HarmonyOS json 解析
261浏览 • 1回复 待解决
证书解析解析证书CN怎么获取
694浏览 • 1回复 待解决
HarmonyOS json解析异常
722浏览 • 1回复 待解决
HarmonyOS xml解析工具
215浏览 • 1回复 待解决