HarmonyOS 鸿蒙Next 怎么将一个json 字符串转成一个class 对象

HarmonyOS 鸿蒙Next 怎么将一个json 字符串转成一个class 对象 怎么将一个json 字符串转成一个class 对像,JSON.parse出来是一个object 对像,而不是我想要的class对像

2 回复

可参考以下demo:

class TestPjo {
  name: string = '';
  age: number = 0;
  static test() {

    //1、object > json字符串
    let obj_1: object = new Object();
    obj_1['name'] = 'aaa';
    obj_1['age'] = 20;
    let pjo_1 = obj_1 as TestPjo;
    console.info('...test_2 pjo_1:' + JSON.stringify(pjo_1));

    //2、json字符串 > object > class
    let str: string = '{"name": "aaa", "age": 20}';
    let tmp: object = JSON.parse(str);
    let pjo_2 = tmp as TestPjo;
    console.info('...test_2 pjo_2:' + JSON.stringify(pjo_2));
    
    //3、class > object > json字符串
    let pjo_3 = new TestPjo();
    pjo_3.name = 'aaa';
    pjo_3.age = 20;
    let obj_3: object = pjo_3;
    console.info('...test_2 obj_3:' + JSON.stringify(obj_3));
  }
}

如果想通过动态的方式来给class里的属性赋值,可以使用class-transformer将Json字符串反序列化得到的对象转换成ArkTS中类的实例对象

1、引入三方库

ohpm install class-transformer

ohpm install reflect-metadata

2、代码

import { Type, plainToClass } from 'class-transformer'
import "reflect-metadata"

const jsonString = '{"name": "John", "age": 30, "city": "New York"}';
class User {
  name: string = '';
  age: number = 0;
  city: string = '';

  getName() {
    return this.name
  }
}

const jsonObject: Object = JSON.parse(jsonString);
let instance = plainToClass(User, jsonObject)
console.log(instance.getName())

更多关于HarmonyOS 鸿蒙Next 怎么将一个json 字符串转成一个class 对象的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)系统中,你可以使用JSON库将一个JSON字符串转换成一个类对象。HarmonyOS提供了丰富的API来处理JSON数据,这里介绍一种常见的方法:

  1. 定义类:首先,你需要定义一个类,其属性与JSON字符串中的键相对应。例如,假设你的JSON字符串如下:
{
  "name": "John",
  "age": 30
}

你可以定义一个对应的类:

// 注意:虽然要求不回答Java相关内容,但此处仅作为示例类比说明,实际鸿蒙开发中需使用鸿蒙支持的编程语言实现类似功能
public class Person {
    public String name;
    public int age;
}

在鸿蒙开发中,你需要使用鸿蒙支持的编程语言(如JS、TS或eTS)来定义此类。

  1. JSON解析:使用鸿蒙提供的JSON解析库来解析JSON字符串。例如,在JavaScript或TypeScript中,你可以使用JSON.parse方法将JSON字符串转换为对象。对于鸿蒙特定的开发语言,请参考其官方文档了解如何解析JSON。

  2. 映射到类对象:解析后的对象可以直接映射到你定义的类对象中(如果使用的是支持直接映射的语言或库)。否则,你可能需要手动将解析后的对象属性赋值给你的类对象。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部