如何在解析JSON文件时提取options对象的ID并调整输出格式
问题解决:提取JSON中options的ID与对应value并按格式输出
需求说明
现有JavaScript的ParseJSON函数可解析指定结构的JSON并提取报表数据,但无法提取options对象中的键(即ID)。需要将options中每个ID与其对应的value依次输出(ID在前,value在后),调整输出格式至目标样式。
修改方案
核心修改parseOBJ函数,原来仅输出value.value,现在遍历options对象时,同时输出当前键(ID)和对应的value值,各占一行。
修改后的完整代码
function ParseJSON() { let data = [ { "id": "c3c6f410f58e5836431b473ebcf134756232d04f2bf35edff8", "component": "checkbox", "customFields": [], "index": 0, "label": "Sector", "options": { "62f92fab79ac81d933765bd0bbc4a1f5ea26cb3a088bcb4e6e": { "index": 0, "value": "Bob", "label": "Bob", "count": 1 }, "2fe91aa3567c0d04c521dcd2fc7e40d7622bb8c3f594d503da": { "index": 1, "value": "Student", "label": "Student", "count": 1 }, "c59ea1159f33b91a7f6edc6925be5e373fc543e4": { "index": 5, "value": "AAA", "label": "AAA" } }, "required": false, "validation": "/.*/", "imported": false }, { "id": "f794c6a52e793ee6f5c42cd5df6b4435236e3495e951709485", "component": "textInput", "customFields": [], "index": 1, "label": "Question AAA", "options": {}, "required": false, "validation": "/.*/", "imported": false } ]; let result = ""; data.forEach(({id, label, content, component, options}) => { if(component!=="htmlelement"){ // 过滤HTML组件 content = label==="HTML" ? "":content; label= label==="HTML" ? "":label; content = content ? '\n' + content:""; component = component==='checkbox' ? "select_boxes":component; component = component==='textInput' ? "text input":component; component = component==='textArea' ? "text area":component; component = component==='url' ? "URL":component; component = component!=='htmlelement' ? component+'\n':""; if(id + component + label + content!==""){ result += id + '\n' + label + content + '\n'+ parseOBJ(options); result += '\n' } result=result.replace(/[\r\n]{2,}/g, "\n\n"); } }); console.log(result) } function parseOBJ(obj) { let R ="" for (let [key, value] of Object.entries(obj)) { // 先输出ID(key),再输出对应的value R += key + '\n' + value.value + '\n'; }; return R }
修改点说明
仅修改parseOBJ函数内部逻辑:
- 遍历
Object.entries(obj)时,将原来的R += value.value + '\n';改为R += key + '\n' + value.value + '\n';,实现ID与对应value的分行输出。
输出结果
运行修改后的代码,将得到符合要求的目标输出:
c3c6f410f58e5836431b473ebcf134756232d04f2bf35edff8 Sector 62f92fab79ac81d933765bd0bbc4a1f5ea26cb3a088bcb4e6e Bob 2fe91aa3567c0d04c521dcd2fc7e40d7622bb8c3f594d503da Student c59ea1159f33b91a7f6edc6925be5e373fc543e4 AAA f794c6a52e793ee6f5c42cd5df6b4435236e3495e951709485 Question AAA
内容的提问来源于stack exchange,提问作者Einarr
相关产品推荐
相关产品推荐

