HarmonyOS 鸿蒙Next中请问json.parse解析的结果没有any应该如何使用?

HarmonyOS 鸿蒙Next中请问json.parse解析的结果没有any应该如何使用? 比如官网文档里支付:

const jwsPurchaseOrder: string = JSON.parse(purchaseDataList[i]).jwsPurchaseOrder;

实际拷贝到项目中就会警告找不到jwsPurchaseOrder,正确的应该如何写?

5 回复

可以尝试使用类型安全访问方式进行访问

const parsedData = JSON.parse(purchaseDataList[i]);
const jwsPurchaseOrder: string = parsedData['jwsPurchaseOrder']; // 通过字符串下标访问

更多关于HarmonyOS 鸿蒙Next中请问json.parse解析的结果没有any应该如何使用?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


定义数据模型接口

interface PurchaseData {
  jwsPurchaseOrder: string;
  // 其他字段声明
}

安全解析

try {
  const parsedData: PurchaseData = JSON.parse(purchaseDataList[i]) as PurchaseData;
  const jwsPurchaseOrder = parsedData.jwsPurchaseOrder;
} catch (error) {
  console.error('JSON解析失败:', error);
}

1.定义相关类型 然后(JSON.parse(purchaseDataList[i]) as 定义的类型).jwsPurchaseOrder

2.使用[‘jwsPurchaseOrder’]进行取值(不推荐)

在HarmonyOS鸿蒙Next中,json.parse返回类型为Object。使用前需通过as关键字明确转换为目标类型,例如let obj = json.parse(str) as Record<string, unknown>。若已知结构,可直接转换为具体接口类型。通过类型断言确保类型安全,避免直接操作any类型。

在HarmonyOS Next中,JSON.parse默认返回any类型,但实际开发中建议使用类型断言或接口定义来确保类型安全。以下是两种推荐写法:

  1. 使用类型断言(推荐):
const parsedData = JSON.parse(purchaseDataList[i]) as { jwsPurchaseOrder: string };
const jwsPurchaseOrder: string = parsedData.jwsPurchaseOrder;
  1. 定义接口类型:
interface PurchaseData {
  jwsPurchaseOrder: string;
}

const parsedData: PurchaseData = JSON.parse(purchaseDataList[i]);
const jwsPurchaseOrder = parsedData.jwsPurchaseOrder;

这样可以消除类型警告,同时保证代码的健壮性。

回到顶部