簡體   English   中英

如何從JavaScript中的JSON文件解析/過濾數據

[英]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

您不能僅僅忽略數據結構的某些部分。

如果您的陣列中有多個 形狀不同的商品 ,則可以使用此商品

  1. 使用json.Data訪問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)); 

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM