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