Javascript 循环json并获取nodejs中的特定值
我有一个场景,在这个场景中,我试图解析下面的json,并获取键“name”和键“id”的所有值,我将进一步将其存储在变量或数组中Javascript 循环json并获取nodejs中的特定值,javascript,arrays,node.js,json,loops,Javascript,Arrays,Node.js,Json,Loops,我有一个场景,在这个场景中,我试图解析下面的json,并获取键“name”和键“id”的所有值,我将进一步将其存储在变量或数组中 [ { "metadata": { "id": "vvvvvvvvvvvvv", "url": "cccccccccccccc", "created_at": "2019-09-06T08:40:41Z", "updated_at": "2019-09-06
[
{
"metadata": {
"id": "vvvvvvvvvvvvv",
"url": "cccccccccccccc",
"created_at": "2019-09-06T08:40:41Z",
"updated_at": "2019-09-06T13:25:46Z"
},
"entity": {
"name": "app1",
"b_enabled": false,
"d_url": "xxxxxs"
}
},
{
"metadata": {
"id": "vvvvvvvvvvccc",
"url": "cccccccccccccc",
"created_at": "2019-09-06T08:40:41Z",
"updated_at": "2019-09-06T13:25:46Z"
},
"entity": {
"name": "app2",
"b_enabled": false,
"d_url": "xxxxxs"
}
},
{
"metadata": {
"id": "vvvvvvvvvvddd",
"url": "cccccccccccccc",
"created_at": "2019-09-06T08:40:41Z",
"updated_at": "2019-09-06T13:25:46Z"
},
"entity": {
"name": "app3",
"b_enabled": false,
"d_url": "xxxxxs"
}
},
{
"metadata": {
"id": "vvvvvvvvvveee",
"url": "cccccccccccccc",
"created_at": "2019-09-06T08:40:41Z",
"updated_at": "2019-09-06T13:25:46Z"
},
"entity": {
"name": "app4",
"b_enabled": false,
"d_url": "xxxxxs"
}
},
{
"metadata": {
"id": "vvvvvvvvvvfff",
"url": "cccccccccccccc",
"created_at": "2019-09-06T08:40:41Z",
"updated_at": "2019-09-06T13:25:46Z"
},
"entity": {
"name": "app5",
"b_enabled": false,
"d_url": "xxxxxs"
}
}
]
我迄今为止所做的尝试(在此之后不确定如何继续,因为这本身提供了错误的结果)
产量
key=entity.name
val=metadata.id
每个文档的
方法很简单。初始化空对象。将键、val放入空对象中
var result = {}
jsonData.forEach(x => {
result[x.entity.name]= x.metadata.id
})
输出中的
key=entity.name
val=metadata.id
每个文档的
方法很简单。初始化空对象。将键、val放入空对象中
var result = {}
jsonData.forEach(x => {
result[x.entity.name]= x.metadata.id
})
输出:
{ app1: 'vvvvvvvvvvvvv',
app2: 'vvvvvvvvvvccc',
app3: 'vvvvvvvvvvddd',
app4: 'vvvvvvvvvveee',
app5: 'vvvvvvvvvvfff' }
输出:
{ app1: 'vvvvvvvvvvvvv',
app2: 'vvvvvvvvvvccc',
app3: 'vvvvvvvvvvddd',
app4: 'vvvvvvvvvveee',
app5: 'vvvvvvvvvvfff' }
这里我使用,以便我可以对数据使用方法,我在传递给map的回调中使用,将值metadata.id
和entity.name
拉入函数的范围。然后返回一个对象,其中entity.name
作为键,metadata.id
作为值。map
的返回值是一个新数组,因此我可以使用它将数组转换为不同的数据结构。在reduce
的每次迭代中,参数current
将是map
每次迭代中返回的单个对象。因为Object.keys(current)
的长度始终为1,所以我可以使用destructuring拉出唯一的键名,并使用key/name
填充返回对象
const json=`[
{
“元数据”:{
“id”:“VVVVV”,
“url”:“CCCC”,
“创建时间”:“2019-09-06T08:40:41Z”,
“更新时间”:“2019-09-06T13:25:46Z”
},
“实体”:{
“名称”:“app1”,
“b_enabled”:false,
“d_url”:“XXXXX S”
}
},
{
“元数据”:{
“id”:“VVVCC”,
“url”:“CCCC”,
“创建时间”:“2019-09-06T08:40:41Z”,
“更新时间”:“2019-09-06T13:25:46Z”
},
“实体”:{
“名称”:“app2”,
“b_enabled”:false,
“d_url”:“XXXXX S”
}
},
{
“元数据”:{
“id”:“VV DDD”,
“url”:“CCCC”,
“创建时间”:“2019-09-06T08:40:41Z”,
“更新时间”:“2019-09-06T13:25:46Z”
},
“实体”:{
“名称”:“app3”,
“b_enabled”:false,
“d_url”:“XXXXX S”
}
},
{
“元数据”:{
“id”:“VVEE”,
“url”:“CCCC”,
“创建时间”:“2019-09-06T08:40:41Z”,
“更新时间”:“2019-09-06T13:25:46Z”
},
“实体”:{
“名称”:“app4”,
“b_enabled”:false,
“d_url”:“XXXXX S”
}
},
{
“元数据”:{
“id”:“VV FFF”,
“url”:“CCCC”,
“创建时间”:“2019-09-06T08:40:41Z”,
“更新时间”:“2019-09-06T13:25:46Z”
},
“实体”:{
“名称”:“app5”,
“b_enabled”:false,
“d_url”:“XXXXX S”
}
}
]`;
const result=JSON.parse(JSON)
.map({元数据:{id},实体:{name})=>{
返回{[name]:id};
})
.减少((上一个,当前)=>{
const[name]=Object.keys(当前);
上一个[名称]=当前[名称];
返回上一个;
}, {});
控制台日志(结果)
我在这里使用,因此我可以对数据使用方法,我在传递给map的回调中使用,将值metadata.id
和entity.name
拉入函数的范围。然后返回一个对象,其中entity.name
作为键,metadata.id
作为值。map
的返回值是一个新数组,因此我可以使用它将数组转换为不同的数据结构。在reduce
的每次迭代中,参数current
将是map
每次迭代中返回的单个对象。因为Object.keys(current)
的长度始终为1,所以我可以使用destructuring拉出唯一的键名,并使用key/name
填充返回对象
const json=`[
{
“元数据”:{
“id”:“VVVVV”,
“url”:“CCCC”,
“创建时间”:“2019-09-06T08:40:41Z”,
“更新时间”:“2019-09-06T13:25:46Z”
},
“实体”:{
“名称”:“app1”,
“b_enabled”:false,
“d_url”:“XXXXX S”
}
},
{
“元数据”:{
“id”:“VVVCC”,
“url”:“CCCC”,
“创建时间”:“2019-09-06T08:40:41Z”,
“更新时间”:“2019-09-06T13:25:46Z”
},
“实体”:{
“名称”:“app2”,
“b_enabled”:false,
“d_url”:“XXXXX S”
}
},
{
“元数据”:{
“id”:“VV DDD”,
“url”:“CCCC”,
“创建时间”:“2019-09-06T08:40:41Z”,
“更新时间”:“2019-09-06T13:25:46Z”
},
“实体”:{
“名称”:“app3”,
“b_enabled”:false,
“d_url”:“XXXXX S”
}
},
{
“元数据”:{
“id”:“VVEE”,
“url”:“CCCC”,
“创建时间”:“2019-09-06T08:40:41Z”,
“更新时间”:“2019-09-06T13:25:46Z”
},
“实体”:{
“名称”:“app4”,
“b_enabled”:false,
“d_url”:“XXXXX S”
}
},
{
“元数据”:{
“id”:“VV FFF”,
“url”:“CCCC”,
“创建时间”:“2019-09-06T08:40:41Z”,
“更新时间”:“2019-09-06T13:25:46Z”
},
“实体”:{
“名称”:“app5”,
“b_enabled”:false,
“d_url”:“XXXXX S”
}
}
]`;
const result=JSON.parse(JSON)
.map({元数据:{id},实体:{name})=>{
返回{[name]:id};
})
.减少((上一个,当前)=>{
const[name]=Object.keys(当前);
上一个[名称]=当前[名称];
返回上一个;
}, {});
控制台日志(结果)代码><
{ app1: 'vvvvvvvvvvvvv',
app2: 'vvvvvvvvvvccc',
app3: 'vvvvvvvvvvddd',
app4: 'vvvvvvvvvveee',
app5: 'vvvvvvvvvvfff' }
var output = {};
your_array.forEach(item => {output[item.entity.name] = item.metadata.id});
// output will now be:
// {
// "app1" : "vvvvvvvvvvvvv",
// "app2" : "vvvvvvvvvvccc",
// "app3" : "vvvvvvvvvvddd",
// "app4" : "vvvvvvvvvveee",
// "app5" : "vvvvvvvvvvfff"
// }