Node.js多层嵌套JSON:从Perspective API提取summaryScore整数值
Node.js 多层嵌套JSON值提取与类型转换实现
多层嵌套JSON的取值逻辑和单层取值没有本质区别,只需要按照接口返回的结构层级,顺着属性路径逐层访问即可。
核心取值路径
你需要的summaryScore下的value值,完整访问链路为:接口返回解析后的对象.attributeScores.TOXICITY.summaryScore.value
可直接复用的代码实现
基础场景(Node.js 14及以上版本,支持可选链语法)
假设apiRes是Perspective API返回的、已经完成JSON解析的JS对象,可直接通过如下代码取值并转整数:
// 安全取值,即使中间某层字段缺失也不会触发代码崩溃 const toxicityFloatScore = apiRes?.attributeScores?.TOXICITY?.summaryScore?.value // 浮点值转整数,根据自身需求选择转换规则 // 1. 直接四舍五入:示例中的0.9345592 转换后为1 const intScore = Math.round(toxicityFloatScore) // 2. 若需要0-100范围的整数评分,可先乘100再转换:示例值转换后为93 // const intScore = Math.round(toxicityFloatScore * 100)
低版本Node.js兼容写法
如果你的运行环境是14以下的Node.js版本,不支持可选链?.语法,需要手动判断每一层字段是否存在,避免因接口返回缺字段直接报错:
let toxicityFloatScore = null // 逐层判断字段存在性 if ( apiRes.attributeScores && apiRes.attributeScores.TOXICITY && apiRes.attributeScores.TOXICITY.summaryScore ) { toxicityFloatScore = apiRes.attributeScores.TOXICITY.summaryScore.value } // 整数转换逻辑同基础场景 const intScore = Math.round(toxicityFloatScore)
常见踩坑提示
- 接口返回的原始内容如果是JSON字符串,必须先通过
JSON.parse(原始返回内容)转成JS对象后才能读取属性,直接对字符串访问属性会拿到全undefined - 后续如果需要读取Perspective API其他检测维度(比如严重毒性、身份攻击等)的分数,只需要把路径中的
TOXICITY替换成对应维度的字段名即可,整体取值逻辑不变 - 不要被多层嵌套的结构复杂度误导:本质就是把完整路径上的每一层属性用
.连接访问,和读取obj.name这类单层值的逻辑完全一致
内容的提问来源于stack exchange,提问作者Hypenord
相关产品推荐
相关产品推荐

