在鸿蒙ArkTS中如何实现json字符串转get请求字符串?

在鸿蒙ArkTS中如何实现json字符串转get请求字符串?问题描述:
{“Method”:“2”,“count”:1,“amount”:“100”}
转成:
Method=2&count=1&amount=100

本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。

阅读 723
avatarAI BotBETA
在鸿蒙ArkTS中,你可以使用JavaScript对象(在ArkTS中通常使用TS对象)来转换JSON字符串为GET请求字符串。以下是一个示例代码,展示了如何实现这一转换:

function jsonToQueryString(jsonStr: string): string {

// 解析JSON字符串为对象
const obj = JSON.parse(jsonStr);

// 使用URLSearchParams将对象转换为查询字符串
const params = new URLSearchParams(obj);

// 返回查询字符串
return params.toString();

}

// 示例使用
const jsonString = '{"Method":"2","count":1,"amount":"100"}';
const queryString = jsonToQueryString(jsonString);
console.log(queryString); // 输出: Method=2&count=1&amount=100


解释:
1. `JSON.parse(jsonStr)`:将JSON字符串解析为JavaScript对象。
2. `new URLSearchParams(obj)`:利用`URLSearchParams`构造函数,将对象转换为查询字符串格式。
3. `params.toString()`:将`URLSearchParams`对象转换为字符串形式。

这种方法简洁且有效,适用于ArkTS环境下的GET请求字符串转换。
1 个回答

你可以参考代码:

index.ets 
@Entry 
@Component 
struct Index { 
  @State message: string = ‘Hello World’; 
  aboutToAppear(): void { 
  // JSON 字符串 
  let jsonRecord:Record<string,object> = JSON.parse(’{“method”:“2”,“amountBig”:“壹元整”,“batchTransferType”:“1”,“list”:[{“payeeAccount”:“6221881600028631957”,“payeeName”:“张三”,“amount”:“100”,“payType”:0,“recDepType”:1}],“payerName”:“有限公司”,“title”:“张三的批量转账”,“payerAccount”:“30000029029200003862965”,“uaIdList”:[4307852314389],“flowId”:“178796”}’) as Record<string,object>; 
// 构建 GET 请求的参数字符串 
let queryString: string = ‘’; 
queryString = this.objectToGetString(jsonRecord); 
console.log(queryString); 
} 
objectToGetString(obj: object): string { 
try { 
let queryString: string = ‘’; 
Object.keys(obj).forEach(key => { 
if(typeof obj[key] === ‘object’ && obj !== null){ 
if(Array.isArray(obj[key])){ 
const array = obj[key] as []; 
const newArray:string[] = []; 
array.forEach((item,index)=>{ 
let getString:string = ‘’; 
if(typeof item === ‘object’ && obj !== null) { 
if(this.isJsonString(JSON.stringify(item))){ 
getString = this.objectToGetString(item); 
}else { 
getString = item; 
} 
}else { 
getString = item; 
} 
newArray.push(getString); 
}) 
let strNewArray = “[” + newArray.join(",") + “]”; 
obj[key] = strNewArray; 
} 
} 
queryString += ${key}=${obj[key]}&; 
}); 
// 去除末尾的 ‘&’ 
queryString = queryString.slice(0, -1); 
return queryString; 
} catch (error) { 
console.error(“Error converting object to JSON string:”, error); 
return ‘’; 
} 
} 
isJsonString(value:string):boolean{ 
try { 
JSON.parse(value); 
return true; 
} catch (error) { 
return false; 
} 
} 
build() { 
Row() { 
Column() { 
Text(this.message) 
.fontSize(50) 
.fontWeight(FontWeight.Bold) 
} 
.width(‘100%’) 
} 
.height(‘100%’) 
} 
}

本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题