JavaScript如何遍历含多个JSON字符串的数组提取指定字段值
实现方法
你只需要把单条JSON的处理逻辑放到数组遍历的回调里即可,不需要修改原有取值逻辑,这里提供两种常用实现:
方式1:直接遍历输出(匹配你的打印需求)
用forEach遍历数组每一项,执行和单条处理完全一致的解析、取值、打印逻辑:
const leo = [ '{"contractName":"tokens","contractAction":"stake","contractPayload":{"to":"hivebuilder","symbol":"LEO","quantity":"0.161"}}', '{"contractName":"tokens","contractAction":"stake","contractPayload":{"to":"pele23","symbol":"LEO","quantity":"1.031"}}', ]; leo.forEach((jsonString) => { const obj = JSON.parse(jsonString); console.log(obj.contractPayload.to, obj.contractPayload.quantity); });
运行后输出和你预期完全一致:
hivebuilder 0.161 pele23 1.031
方式2:先提取结果存储,再按需使用
如果你需要把提取到的字段存下来后续做其他处理,而不是直接打印,可以用map生成结果数组:
const leo = [ '{"contractName":"tokens","contractAction":"stake","contractPayload":{"to":"hivebuilder","symbol":"LEO","quantity":"0.161"}}', '{"contractName":"tokens","contractAction":"stake","contractPayload":{"to":"pele23","symbol":"LEO","quantity":"1.031"}}', ]; // 提取所有目标字段,存为结构化数组 const extractedResult = leo.map((jsonString) => { const obj = JSON.parse(jsonString); return { to: obj.contractPayload.to, quantity: obj.contractPayload.quantity }; }); // 需要输出时遍历打印即可 extractedResult.forEach(item => { console.log(item.to, item.quantity); });
鲁棒性优化(可选)
如果你的数百条数据里可能存在格式错误的JSON、或者缺目标字段的异常数据,可以加错误捕获避免程序中断:
leo.forEach((jsonString) => { try { const obj = JSON.parse(jsonString); // 校验字段存在再打印 if (obj?.contractPayload?.to && obj?.contractPayload?.quantity) { console.log(obj.contractPayload.to, obj.contractPayload.quantity); } else { console.log('当前条目缺少目标字段:', jsonString); } } catch (e) { console.log('JSON解析失败,非法格式:', jsonString); } });
内容的提问来源于stack exchange,提问作者Eric FNa
相关产品推荐
相关产品推荐

