我有一个像这样的 json 对象
{
"from": {
"required": false,
"type": {
"name": {
"required": false,
"type": "String"
},
"email": {
"required": true,
"type": "String"
}
}
},
"to": {
"required": true,
"type": [
{
"name": {
"required": false,
"type": "String"
},
"email": {
"required": true,
"type": "String"
}
}
]
},
"subject": {
"required": true,
"type": "String"
},
"text": {
"required": true,
"type": "String"
},
"html": {
"required": true,
"type": "String"
}
}
该对象包含嵌套对象,具有从各种服务设置的属性。因此,属性名称是动态更改的。我想获取属性名称和各自的值。我已经尝试过以下代码。
for (var prop in data) {
$scope.fieldsInfo.push({ "label": prop, "required":data.hasOwnProperty(prop) });
}
在上面的代码中,我还获取了属性名称 (from) 和所需的值,现在我想获取嵌套的对象属性名称 (name,email) 以及名称对象中的 (required,type) 值。在上面的对象 from
包含 type
是一个对象所以 isArray:false
和下一个对象 to
包含 type
是一个数组,所以 isArray:true
剩余对象 type
是一个字符串,所以 isArray:false
。
像这样输出
$scope.fieldsInfo=[];
$scope.fieldsInfo=[
{
"label" :"from",
"required" :false,
"isArray" :false,
"type" : [
{
"label" :"name",
"type" : "String",
"required": false
}
{
"label" : "email",
"type" : "String",
"required": true
}
]
},
{
"label" :"to",
"required" :true,
"isArray" :true,
"type" : [
{
"label" : "name",
"type" : "String",
"required": false
}
{
"label" : "email",
"type" : "String",
"required": true
}
]
},
{
"label" :"subject",
"required" :true,
"isArray" :false,
"type" :"String"
},
{
"label" :"text",
"required" :true,
"isArray" :false,
"type" :"String"
},
{
"label" :"html",
"required" :true,
"isArray" :false,
"type" :"String"
}
]
最佳答案
我不太确定你想要实现什么,但根据你的问题标题,我将提供一些处理 javascript 对象/数组的基础知识:
使用 for (var prop in data) {}
遍历键(就像您所做的那样)不适用于嵌套对象。一种可能的方法是使用递归函数:
function get_keys_recursive (object_or_array) {
for (var key in object)
if (object[key] != null) //null is also a object
if (typeof object[key] === 'object')
get_keys_recursive (typeof object[key]); //recursive function call
else {
console.log (key); //here you get all keys
console.log (object[key]); //here you get the value
}
}
get_keys_recursive (your_object); //function call
如果这不能回答您的问题,请提供更详细的信息。
关于javascript - 如何在 AngularJs 中获取 json 对象和嵌套对象的属性名称和值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36122299/