访问JSON[Nodejs]中的数据

访问JSON[Nodejs]中的数据,json,node.js,Json,Node.js,我有一些JSON,当转换为对象时,它看起来如下所示: { “一些随机字符串”: { "文章标题":"标题",, '文章图像URL':'图像URL', “文章发表日期”:“日期”, “文章URL”:“文章URL”, “类别”:精神疾病, “地点”:“地点”, “源名称”:“源” } } 我将它存储在一个名为results的数组中。如何才能以结果的形式访问Location中的值。Location不起作用。如果是JSON,则不必将其转换为数组。您可以直接解析它,如下所示 var obj = { '-K

我有一些JSON,当转换为对象时,它看起来如下所示:

{
“一些随机字符串”:
{
"文章标题":"标题",,
'文章图像URL':'图像URL',
“文章发表日期”:“日期”,
“文章URL”:“文章URL”,
“类别”:精神疾病,
“地点”:“地点”,
“源名称”:“源”
}
}


我将它存储在一个名为
results
的数组中。如何才能以
结果的形式访问
Location
中的值。Location
不起作用。

如果是JSON,则不必将其转换为数组。您可以直接解析它,如下所示

var obj = {
'-KzZaDXhWRwdzfKUf5tl':
{ 'Article Headline': 'headline',
  'Article Image URL': 'image url',
  'Article Published Date': 'date',
  'Article URL': 'article url',
  'Category': 'mental illness,',
  'Location': 'place',
  'Source Name': 'source' }
}


上面打印的位置将显示在屏幕上。

对象的路径将是
结果[0]['RANDOM STRING']。位置
,但是,由于您不知道随机字符串,因此最好使用非引用方法访问嵌套对象

谢天谢地,在最新版本的NodeJS/Javascript中有很多工具可以做到这一点!
Array.prototype.map(函数(项、索引、数组)、上下文)
似乎就是您想要的函数!它将根据应用于数组中每个对象的函数返回创建一个新数组

然后,您可以使用构建在对象本身上的其他工具来更改每个对象,如

// array of keys, useful for looking for a specific key
Object.keys(someReallyObtuseObject)

// array of VALUES! Awesome for looking for a specific data type
Object.values(someReallyObtuseObject)
选中节点绿色表示它在NodeJS 7.10或更高版本中可用,并且表示它早在4.8.6版本就可用

但不要忘记,这些将对象转换为数组。之后,您可以使用forEach、filter、map和许多其他数组方法来访问数据


一个例子 假设我有一个名为results的数据库数组

const results = [{...},{...},...];
我想用我知道的标识符找到一个结果

// I will either find the result, or receive undefined
let result = results.filter(r => r[key] == identifier)[0];
然而,在我的结果中,该对象有一个名为“relatedposts”的键,它是一个对象,该键是每个相关post的唯一ID。我想访问上述帖子,但我不知道它们的唯一ID,所以我想将其转换为一个数组,以便更轻松地进行处理

// This gives me an array of related posts with their ID now nested inside them
let relatedPosts = Object.keys(result['related posts']).map(k => {
  let r = result['related posts'][k];
  r.id = k;
  return r;
});
现在我可以很容易地浏览我的相关帖子,而且我从来不需要知道帖子的ID。假设我想对每篇文章进行console.log记录(你绝对不想这样做)

轻松点


示例2,从用户数组中获取位置 用户被定义为具有键“first”、“last”、“location”的对象

const users = [{...},{...},...]
let locations = users.map(user => user.location)

这不是有效的JSON。请提供您迄今为止尝试过的代码。@kern elliott您说result.location不起作用。你是说results.location不起作用吗?@RobertMennell感谢格式的更改等。你的问题的答案是yes@KernElliott我已经更新了我的答案,以反映一个模棱两可的问题,这很好,但是如果我不知道对象的键,那么我如何访问该对象呢?这就是我使用数组的理由。没有JSON对象这样的东西。它要么是JS对象,要么是JSON。我不认为他们是否知道这个键,这甚至是个问题
relatedPosts.forEach(console.log);
const users = [{...},{...},...]
let locations = users.map(user => user.location)