解析json文件时如何提取选项数组的id

问题描述 投票:0回答:1

我想解析 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
}
javascript json google-apps-script
1个回答
0
投票
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
© www.soinside.com 2019 - 2024. All rights reserved.