有什么方法可以解析/过滤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
有什么方法可以执行此活动?
答案 0 :(得分:2)
您可以使用.env
点表示法来访问它
.
答案 1 :(得分:0)
filter
是一个数组方法。
JSON.parse(...)
不会给您一个数组。它将为您提供一个具有Data
属性的对象。该属性的值是一个数组。
JSON.parse(...).Data.filter
。
您不能只忽略数据结构的一部分。
答案 2 :(得分:0)
如果不同形状的数组中有多个项目,则可以使用此
Data
访问json.Data
键map
您的数组将其项转换为names
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));