我想解析 JSON 文件,它看起来像下面函数中的数据文件。
我可以从数据中提取报告所需的所有数据(选项数组 ids 除外)
所以在json文件数据的问题
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"
}
}
我需要提取
62f92fab79ac81d933765bd0bbc4a1f5ea26cb3a088bcb4e6e
2fe91aa3567c0d04c521dcd2fc7e40d7622bb8c3f594d503da
c59ea1159f33b91a7f6edc6925be5e373fc543e4
并将其添加到我的输出中
我的输出
c3c6f410f58e5836431b473ebcf134756232d04f2bf35edff8
Sector
Bob
Student
AAA
f794c6a52e793ee6f5c42cd5df6b4435236e3495e951709485
Question AAA
我需要的输出
c3c6f410f58e5836431b473ebcf134756232d04f2bf35edff8
Sector
62f92fab79ac81d933765bd0bbc4a1f5ea26cb3a088bcb4e6e
Bob
2fe91aa3567c0d04c521dcd2fc7e40d7622bb8c3f594d503da
Student
c59ea1159f33b91a7f6edc6925be5e373fc543e4
AAA
f794c6a52e793ee6f5c42cd5df6b4435236e3495e951709485
Question AAA
谢谢
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"){
//filter out HTML componets
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 += console.log(component + 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)) {
R += value.value + '\n';
};
return R
}
function myFunk() {
let s = '{"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" } } }';
let obj = JSON.parse(s);
Logger.log(Object.keys(obj.options));
}
Execution log
9:48:07 PM Notice Execution started
9:48:08 PM Info [62f92fab79ac81d933765bd0bbc4a1f5ea26cb3a088bcb4e6e, 2fe91aa3567c0d04c521dcd2fc7e40d7622bb8c3f594d503da, c59ea1159f33b91a7f6edc6925be5e373fc543e4]
9:48:10 PM Notice Execution completed