如何从JavaScript中的JSON文件解析/过滤数据

时间:2019-02-18 10:51:29

标签: javascript node.js json

有什么方法可以解析/过滤Javascript文件中JSON文件中存在的数据。

基本上,我是在本地javascript中调用JSON文件。我在读取特定数据和打印时遇到了麻烦。

任何人都可以帮忙。

JSON文件包含:

{
    "Data": [
    {

    "name": "John",
    "age": 30
    },

    {
    "joined on":"Jan 2015",
    "working on": "Automation",
    }
]
}

我正在尝试将上述JSON文件读取为:

var jfile = require("./Example.json");

var test = JSON.parse(JSON.stringify(jfile))

console.log(test)

我得到这样的输出:

{ Data:
   [ { name: 'John', age: 30 },
     { 'joined on': 'Jan 2015', 'working on': 'Automation' } ] }

从以上所述,我感兴趣的是仅访问/过滤一个名称(即“名称”)。我只想将值“ John”打印到控制台。

我尝试对JSON.parse方法使用“ .filter”方法,但它向我抛出错误:

JSON.parse(...).filter is not a function

有什么方法可以执行此活动?

5 个答案:

答案 0 :(得分:2)

您可以使用.env点表示法来访问它

.

答案 1 :(得分:0)

filter是一个数组方法。

JSON.parse(...)不会给您一个数组。它将为您提供一个具有Data属性的对象。该属性的值是一个数组。

JSON.parse(...).Data.filter

您不能只忽略数据结构的一部分。

答案 2 :(得分:0)

如果不同形状的数组中有多个项目,则可以使用此

  1. 使用Data访问json.Data
  2. map您的数组将其项转换为names
  3. 应用filter(Boolean)清除未定义的对象

在您的情况下,您将得到一个仅包含一个名称​​ John

的数组

const getName = json => json.Data.map(x => x.name).filter(Boolean);

const json = {
  "Data": [{

      "name": "John",
      "age": 30
    },

    {
      "joined on": "Jan 2015",
      "working on": "Automation",
    }
  ]
};

console.log(getName(json));

答案 3 :(得分:0)

您的JSON的主要级别是一个对象(不是数组),并且只有数组具有CreateProjectResponse CreateProjectResponse: object Defined in src/requests/createProjectRequest.ts:16 方法。
因此,使用.filter键过滤数组:

Data

但是如果您不重新解析JSON,那就更好了:

var test = JSON.parse(JSON.stringify(jfile)).Data.filter(/*something*/);

答案 4 :(得分:0)

正如Quentin在他的评论中提到的,below语句的用途是什么?

  

var test = JSON.parse(JSON.stringify(jfile))

您可以直接从响应中访问name属性。

尝试一下:

var obj = {
	"Data": [{

			"name": "John",
			"age": 30
		},

		{
			"joined on": "Jan 2015",
			"working on": "Automation"
		}
	]
};

// Solution 1
console.log(obj.Data.map(item => item.name).filter(Boolean));

// Solution 2
console.log(obj.Data.filter(item => item.name).map(elem => elem.name));