![](/img/trans.png)
[英]JSON+Javascript/jQuery. How to import data from a json file and parse it?
[英]How to parse/filter data from JSON file in Javascript
有什么方法可以解析/過濾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
有什么方法可以執行此活動嗎?
您可以使用訪問它.
點表示法
var a = { "Data": [{ "name": "John", "age": 30 }, { "joined on": "Jan 2015", "working on": "Automation", } ] } console.log(a.Data[0].name)
filter
是一種數組方法。
JSON.parse(...)
不會給您一個數組。 它將為您提供一個具有Data
屬性的對象。 該屬性的值是一個數組。
JSON.parse(...).Data.filter
。
您不能僅僅忽略數據結構的某些部分。
如果您的陣列中有多個 形狀不同的商品 ,則可以使用此商品
json.Data
訪問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));
JSON的主要級別是一個對象(不是數組),並且只有數組具有.filter
方法。
因此,在Data
鍵下過濾數組:
var test = JSON.parse(JSON.stringify(jfile)).Data.filter(/*something*/);
但如果您不重新解析JSON,那就更好了:
var test = jfile.Data.filter(/*something*/);
正如昆汀(Quentin)在評論中所提到的,以下聲明的用途是什么?
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));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.