如何访问解析后JSON的嵌套属性并存入自定义JavaScript对象
问题说明
你当前的属性访问路径有误。JSON.parse处理后得到的表格数据中,data.json.table.rows是行级数组,单条行数据的实际内容存储在行对象的c字段(列数组)中,每一列的有效值存储在列对象的v字段下,直接读取data.json.table.rows[2]拿到的是整行的包装对象,不是你需要的文本值。
正确实现代码
var data = { json: '', text: '', welcome: '', q1: '', } let foo = await fetch(spreadsheet); data.text = await foo.text(); data.json = JSON.parse(data.text.substr(47).slice(0, -2)) // 先定位到目标行 const currentRow = data.json.table.rows[2] // 按列索引读取对应有效值,可选链避免空值报错 data.welcome = currentRow.c[1]?.v || '' data.q1 = currentRow.c[2]?.v || '' console.log(data.welcome, data.q1)
取值逻辑说明
- 层级对应关系:
表格根对象 -> rows行数组 -> 单条行对象 -> c列数组 -> 单列对象 -> v实际值 - 数组索引从0开始计数,你给出的行结构示例中:
c[1].v对应内容为2. Pagosc[2].v对应问题1的描述文本c[4].v对应该行存储的表单链接
- 代码中加入的
?.可选链和|| ''默认值,是为了避免目标行/列不存在时抛出JS运行时错误,保证字段值和初始化时的字符串类型一致。 - 如果需要取其他位置的内容,先打印
data.json.table.rows确认目标内容所在的行索引、列索引,修改对应位置的数字即可。
内容的提问来源于stack exchange,提问作者SchraderNM
相关产品推荐
相关产品推荐

