HarmonyOS 鸿蒙Next:开启了严格的ARKTS代码检查后,通过JSON.parse解析JSON后如何获取JSON对象值,或有其他方法
HarmonyOS 鸿蒙Next:开启了严格的ARKTS代码检查后,通过JSON.parse解析JSON后如何获取JSON对象值,或有其他方法 开启了严格的ARKTS代码检查,通过JSON.parse解析JSON后,怎么获取JSON对象值,还是说有其他的方法
在ArkTS中可以取JSON的值,示例代码如下:
class address {
street: string;
city: string;
state: string;
constructor(street: string, city: string, state: string) {
this.street = street;
this.city = city;
this.state = state;
}
}
class jsonObj {
address: address
name: string;
age: number;
phoneNumbers: Array<string>;
constructor(name: string, age: number, address: address, phoneNumbers: Array<string>) {
this.name = name;
this.age = age;
this.address = address;
this.phoneNumbers = phoneNumbers;
}
}
@Entry
@Component
struct Index {
@State message: string = 'Hello World'
build() {
Row() {
Column() {
Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)
Button() {
Text("打印")
}.width(150).height(75).onClick(() => {
let str = ["555-1234", "555-5678"]
let add = new address("123 Main St", "Anytown", "CA");
let json = new jsonObj("john", 30, add, str)
console.log(JSON.stringify(json.name));
console.log(JSON.stringify(json.age));
console.log(JSON.stringify(json.address));
console.log(JSON.stringify(json.phoneNumbers));
})
}.width('100%')
}.height('100%')
}
}
系统规格问题:鸿蒙目前暂不支持,因为开启了严格的ARKTS语言检查,所以使用的data对象必须进行class类型的自定义,否则无法使用
解析字符串为对象,取字符串中的某些字段的值参考:
// 定义类型接口:
interface userRespType {
nickname: string,
avatar: string
}
interface dataType {
roomId: string,
nativeUrl: string,
status: string,
userResp: Array<userRespType>
}
interface jsonObjectType {
reqId: string,
code: number,
msg: string,
data: dataType
}
let userResp: userRespType = {
nickname: "一个很长的名字哈哈哈",
avatar: "https://aopsmsg.pingan.com.cn/group4/M01/2A/3C/HhDEeFqcsfiAY06aAAA0Fw-3GV0645.jpg#w=210;h=210"
}
let data: dataType = {
roomId: "823688",
nativeUrl: "native://enterLiveRoom?RoomId=823688",
status: "1",
userResp: [userResp]
}
let jsonObj: jsonObjectType = {
reqId: "2b2258ae54e3101a",
code: 0,
msg: "success",
data: data
}
let json: string =
JSON.stringify(jsonObj) // 假设test为JSON.prase解析后的数据
let test:jsonObjectType = JSON.parse(json)
console.info(test.msg)
console.info(test.data.userResp[0].nickname)
更多关于HarmonyOS 鸿蒙Next:开启了严格的ARKTS代码检查后,通过JSON.parse解析JSON后如何获取JSON对象值,或有其他方法的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next系统中,当开启了严格的ARKTS代码检查后,使用JSON.parse
解析JSON字符串后,可以通过以下几种方式获取JSON对象的值:
-
通过键名直接访问: 如果JSON对象的结构已知,可以直接通过键名来访问对应的值。例如:
let jsonString = '{"name": "张三", "age": 30}'; let jsonObject = JSON.parse(jsonString); let name = jsonObject.name; // 获取name的值 let age = jsonObject['age']; // 同样可以获取age的值
-
使用
Object.keys
或Object.entries
遍历: 如果不知道JSON对象的具体结构,可以使用Object.keys
或Object.entries
来遍历对象的键或键值对。let keys = Object.keys(jsonObject); keys.forEach(key => { console.log(key, jsonObject[key]); });
-
使用可选链(Optional Chaining): 对于可能不存在的嵌套属性,可以使用可选链来安全地访问。
let nestedValue = jsonObject?.someKey?.nestedKey;
如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html,