如何使用Node.js从JSON中提取多级子对象并获取指定p标签内容
解决方案
先执行以下代码确认Texte_Integral字段的结构和类型:
'use strict'; const fs = require('fs'); var data = JSON.parse(fs.readFileSync('./me.json')); data.Document.Decision.forEach(x => { // 新增打印确认结构 console.log('Texte_Integral类型:', typeof x.Texte_Integral, '值:', x.Texte_Integral); console.log(x.Texte_Integral.p); });
根据输出结果对应处理:
场景1:Texte_Integral为字符串类型(最常见场景)
说明该字段存储的是完整HTML文本,p是HTML标签而非JSON属性,无法直接通过点语法取值。
处理方法1:正则匹配提取
适合结构简单的HTML:
data.Document.Decision.forEach(x => { const htmlStr = x?.Texte_Integral || ''; const pMatch = htmlStr.matchAll(/<p>(.*?)<\/p>/g); for (const match of pMatch) { console.log(match[1].trim()); } });
处理方法2:cheerio库解析
适合结构复杂的HTML,稳定性更高:
- 安装依赖
npm install cheerio - 完整代码
'use strict'; const fs = require('fs'); const cheerio = require('cheerio'); var data = JSON.parse(fs.readFileSync('./me.json')); data.Document.Decision.forEach(x => { const htmlStr = x?.Texte_Integral || ''; const $ = cheerio.load(htmlStr); $('p').each((index, element) => { console.log($(element).text().trim()); }); });
场景2:Texte_Integral为对象类型
说明是JSON嵌套结构,可排查以下问题:
- 确认
p键名拼写是否正确,是否存在大小写、特殊字符差异 - 确认
p是否为数组类型,若是需遍历访问:
data.Document.Decision.forEach(x => { const pContent = x?.Texte_Integral?.p; if(Array.isArray(pContent)) { pContent.forEach(item => console.log(item)); } else { console.log(pContent); } });
内容的提问来源于stack exchange,提问作者Adnan Ali Khan
相关产品推荐
相关产品推荐

