Javascript 访问json子数据

Javascript 访问json子数据,javascript,json,Javascript,Json,我试图在循环中向div中添加一些标签和单选按钮,其中文本值存储在json中,如: ... }, "Doc_3": { "Q1":{ "desc":"description Q1", "radio1":"radio 1 text ", "

我试图在循环中向div中添加一些标签和单选按钮,其中文本值存储在json中,如:

...
},
    "Doc_3":
    {
            "Q1":{
                "desc":"description Q1",
                "radio1":"radio 1 text ",
                "radio2":"radio 2 text",
                ...
            },
            "Q2":{"desc":"description Q2"}
        }
        
}
到目前为止,我通过以下代码获得了Q1和Q2描述:

fetch("data.json")
    .then(response => response.json())
    .then(data => {
       for(x in data.Doc_3){
          desc = data.Doc_3[x].desc
          console.log(desc)
       }
})
但是我没有(在一个循环中)获取数据.Doc_3[x].radio[y] 其中,
y
将是一个变量,在循环结束时递增1,这样我就可以附加radio1、radio2、radio3。。。在我的部门


有人能帮我找到如何访问这些元素吗

let数据={
“Doc_3”:{
“Q1”:{
“描述”:“描述Q1”,
“radio1”:“radio1文本”,
“radio2”:“radio2文本”,
},
“Q2”:{
“描述”:“描述Q2”
}
}
}
用于(数据文件3中的x){
desc=data.Doc_3[x].desc
设y=0;
while(++y&&data.Doc_3[x]['radio'+y]){
console.log(y,data.Doc_3[x]['radio'+y])
}
console.log(desc)

}
这就是你要找的吗

let数据={
“Doc_3”:{
“Q1”:{
“描述”:“描述Q1”,
“radio1”:“radio1文本”,
“radio2”:“radio2文本”,
},
“Q2”:{
“描述”:“描述Q2”
}
}
}
用于(数据文件3中的x){
desc=data.Doc_3[x].desc
设y=0;
while(++y&&data.Doc_3[x]['radio'+y]){
console.log(y,data.Doc_3[x]['radio'+y])
}
console.log(desc)

}
您可以启动一个计数器变量(在本例中为
y
)并动态组合键名。然后,可以循环对象的属性,直到它遇到未定义的属性

var data = {
  Doc_3: {
    Q1: {
      desc: "description Q1",
      radio1: "radio 1 text ",
      radio2: "radio 2 text"
    },
    Q2: { desc: "description Q2", radio1: "radio 1 text " }
  }
};

for (x in data.Doc_3) {
  desc = data.Doc_3[x].desc;
  console.log(desc);
  let y = 1;
  while(data.Doc_3[x]["radio" + y]) {
    console.log(data.Doc_3[x]["radio" + y]);
    y++;
  }
}

您可以启动一个计数器变量(在本例中为
y
)并动态组合键名。然后,可以循环对象的属性,直到它遇到未定义的属性

var data = {
  Doc_3: {
    Q1: {
      desc: "description Q1",
      radio1: "radio 1 text ",
      radio2: "radio 2 text"
    },
    Q2: { desc: "description Q2", radio1: "radio 1 text " }
  }
};

for (x in data.Doc_3) {
  desc = data.Doc_3[x].desc;
  console.log(desc);
  let y = 1;
  while(data.Doc_3[x]["radio" + y]) {
    console.log(data.Doc_3[x]["radio" + y]);
    y++;
  }
}

通过键入
data.Doc\u 3[x].radio[y]
,您希望在对象
data.Doc\u 3[x]
中有一个数组
radio

你可以通过改变收音机文本的存储方式来做到这一点。不要使用
'radio1'
'radio2'
等,而是创建一个名为
radio
的数组,其中包含单选按钮的文本

"Q1": {
    "desc": "description Q1",
    "radio": [
        "radio 1 text ",
        "radio 2 text"
        ...
    ]
}
然后,您可以在数组
data.Doc_3[x]中循环

const textArray = data.Doc_3[x].radio;

for (text of textArray) {
    console.log(text)
}

您还可以使用保持原始JSON结构并从1开始递增索引

您可以这样访问
radio1
属性:
data.Doc\u 3[x].radio1
,也可以这样访问:
data.Doc\u 3[x]['radio1']
。您可以将字符串
'radio'
与索引(
'radio'+y
`radio${y}`
)连接起来以获取属性名称:

for (x in data.Doc_3){
    const Q = data.Doc_3[x];
    // you do not know the length, so you have to
    // loop through until the text is undefined
    for (let y = 1, text; text = Q[`radio${y}`]; y++) {
        console.log(text)
    }
}

通过键入
data.Doc\u 3[x].radio[y]
,您希望在对象
data.Doc\u 3[x]
中有一个数组
radio

你可以通过改变收音机文本的存储方式来做到这一点。不要使用
'radio1'
'radio2'
等,而是创建一个名为
radio
的数组,其中包含单选按钮的文本

"Q1": {
    "desc": "description Q1",
    "radio": [
        "radio 1 text ",
        "radio 2 text"
        ...
    ]
}
然后,您可以在数组
data.Doc_3[x]中循环

const textArray = data.Doc_3[x].radio;

for (text of textArray) {
    console.log(text)
}

您还可以使用保持原始JSON结构并从1开始递增索引

您可以这样访问
radio1
属性:
data.Doc\u 3[x].radio1
,也可以这样访问:
data.Doc\u 3[x]['radio1']
。您可以将字符串
'radio'
与索引(
'radio'+y
`radio${y}`
)连接起来以获取属性名称:

for (x in data.Doc_3){
    const Q = data.Doc_3[x];
    // you do not know the length, so you have to
    // loop through until the text is undefined
    for (let y = 1, text; text = Q[`radio${y}`]; y++) {
        console.log(text)
    }
}