我是新手,正在尝试在我的网页中实现JSON对象的所有键和值。我有以下JSON结构。我希望所有的键和值都被打印在我的网页上,其中键应该被打印为标签。
{
"key1": "value1",
"key2": "value2",
"key3": "value3",
"key4":{
"k1": "val1",
"k2": {
"p1": "v1",
"p2": "v2",
"p3": "v3"
}
}
}
我已经编写了以下代码来获取此JSON的键和值。
getValues() {
let arr = [];
arr = Object.keys(this.props.myArr).map(key =>
<div key={this.props.data[key]} className="row">
<div className="col-xs-6">{key}</div>
<div className="col-xs-6">{this.props.myArr[key]}
</div>
</div>
)
return arr;
}
render() {
return (
<div>
<Header />
<div className="content">
{this.getValues()}
</div>
</div>
)
}
}
props.myArr包含整个对象。
我能够打印键和值,但无法打印key4(p1,p2,p3)下的嵌套对象。我希望所有的键和它们的值都能依次打印在我的网页上。请问我做错了什么,如何访问JSON对象的所有键(作为标签)和值。
编辑 -
const myObj = {
"key1": "value1",
"key2": "value2",
"key3": "value3",
"key4": {
"k1": "val1",
"k2": {
"p1": "v1",
"p2": "v2",
"p3": "v3"
}
}
}
class Details extends React.component{
constructor(){
this.getValues = this.getValues.bind(this);
}
getValues() {
let arr = [];
arr = Object.keys(myObj).map(key =>
<div key={myObj[key]} className="row">
<div className="col-xs-6">{key}</div>
<div className="col-xs-6">{myObj[key]}
</div>
</div>
)
return arr;
}
generateData(myObj) {
const newData = Object.keys(myObj).reduce((result, currentKey) => {
if (typeof myObj[currentKey] === 'string' || myObj[currentKey] instanceof String) {
const elementToPush = getValues(currentKey, myObj[currentKey]);
result.push(elementToPush);
} else {
const nested = generateData(myObj[currentKey]);
result.push(...nested);
}
return result;
}, []);
return newData;
}
render() {
return (
<div>
<Header />
<div className="content">
{this.generateData(myObj)}
</div>
</div>
)
}
}
我正在使用map函数的getValues方法来检索第一层键和值,因为您在generateElement()下提供的语法会导致错误。