Hướng dẫn javascript get value from json array by key - javascript nhận giá trị từ mảng json theo khóa

Trước hết, bạn không đối phó với "đối tượng JSON". Bạn đang đối phó với một đối tượng JavaScript. JSON là một ký hiệu văn bản, nhưng nếu mã ví dụ của bạn hoạt động (

{
  "name": "Jane Doe",
  "favorite-game": "Stardew Valley",
  "subscriber": false
}
2), bạn đã bỏ qua ký hiệu đó thành biểu đồ đối tượng JavaScript. .

Show

Ở đây, chiều dài của mảng này là 2.

Không, nó là 3.

Vì vậy, tôi cần lấy tên (như số tiền hoặc công việc ... hoàn toàn bốn tên) và cũng để đếm có bao nhiêu tên?

Nếu bạn đang sử dụng một môi trường có hỗ trợ ECMAScript5 đầy đủ, bạn có thể sử dụng

{
  "name": "Jane Doe",
  "favorite-game": "Stardew Valley",
  "subscriber": false
}
3 (spec | mdn) để lấy các phím có thể phản cảm cho một trong các đối tượng dưới dạng mảng. Nếu không (hoặc nếu bạn chỉ muốn lặp qua chúng thay vì nhận một mảng của chúng), bạn có thể sử dụng
{
  "name": "Jane Doe",
  "favorite-game": "Stardew Valley",
  "subscriber": false
}
4:

var entry;
var name;
entry = array[0];
for (name in entry) {
    // here, `name` will be "amount", "job", "month", then "year" (in no defined order)
}

Ví dụ làm việc đầy đủ:

(function() {
  
  var array = [
    {
      amount: 12185,
      job: "GAPA",
      month: "JANUARY",
      year: "2010"
    },
    {
      amount: 147421,
      job: "GAPA",
      month: "MAY",
      year: "2010"
    },
    {
      amount: 2347,
      job: "GAPA",
      month: "AUGUST",
      year: "2010"
    }
  ];
  
  var entry;
  var name;
  var count;
  
  entry = array[0];
  
  display("Keys for entry 0:");
  count = 0;
  for (name in entry) {
    display(name);
    ++count;
  }
  display("Total enumerable keys: " + count);

  // === Basic utility functions
  
  function display(msg) {
    var p = document.createElement('p');
    p.innerHTML = msg;
    document.body.appendChild(p);
  }
  
})();

Vì bạn đang đối phó với các đối tượng thô, vòng lặp

{
  "name": "Jane Doe",
  "favorite-game": "Stardew Valley",
  "subscriber": false
}
4 ở trên là tốt (trừ khi ai đó đã phạm tội với
{
  "name": "Jane Doe",
  "favorite-game": "Stardew Valley",
  "subscriber": false
}
6, nhưng hãy giả sử không). Nhưng nếu đối tượng bạn muốn các phím từ cũng có thể kế thừa các thuộc tính có thể phản hồi từ nguyên mẫu của nó, bạn có thể giới hạn vòng lặp trong chỉ các khóa của chính đối tượng (chứ không phải các khóa của nguyên mẫu của nó) bằng cách thêm cuộc gọi
{
  "name": "Jane Doe",
  "favorite-game": "Stardew Valley",
  "subscriber": false
}
7 vào đó:

for (name in entry) {
  if (entry.hasOwnProperty(name)) {
    display(name);
    ++count;
  }
}

JSON Đối tượng theo nghĩa đen


Đây là một chuỗi JSON:

'{"Tên": "John", "Tuổi": 30, "Xe": NULL}'

Bên trong chuỗi JSON có một đối tượng JSON theo nghĩa đen:

{"Tên": "John", "Tuổi": 30, "Xe": NULL}

Các chữ JSON đối tượng được bao quanh bởi niềng răng xoăn {}.

JSON Object Ltersals chứa các cặp khóa/giá trị.

Khóa và giá trị được phân tách bằng một dấu hai chấm.

Các khóa phải là chuỗi và các giá trị phải là loại dữ liệu JSON hợp lệ:

  • sợi dây
  • con số
  • sự vật
  • mảng
  • boolean
  • null

Mỗi cặp khóa/giá trị được phân tách bằng dấu phẩy.

Đó là một sai lầm phổ biến khi gọi một đối tượng JSON là "một đối tượng JSON".

JSON không thể là một đối tượng. JSON là một định dạng chuỗi.

Dữ liệu chỉ là JSON khi nó ở định dạng chuỗi. Khi nó được chuyển đổi thành biến JavaScript, nó trở thành một đối tượng JavaScript.


Đối tượng JavaScript

Bạn có thể tạo một đối tượng JavaScript từ một đối tượng JSON theo nghĩa đen:

Thông thường, bạn tạo một đối tượng JavaScript bằng cách phân tích chuỗi JSON:

Thí dụ

myjson = '{"tên": "john", "tuổi": 30, "xe": null}'; myobj = json.parse (myjson);
myObj = JSON.parse(myJSON);

Hãy tự mình thử »


Truy cập các giá trị đối tượng

Bạn có thể truy cập các giá trị đối tượng bằng cách sử dụng ký hiệu DOT (.):

Thí dụ

myjson = '{"tên": "john", "tuổi": 30, "xe": null}'; myobj = json.parse (myjson);
const myObj = JSON.parse(myJSON);
x = myObj.name;

Hãy tự mình thử »

Truy cập các giá trị đối tượng

Thí dụ

myjson = '{"tên": "john", "tuổi": 30, "xe": null}'; myobj = json.parse (myjson);
const myObj = JSON.parse(myJSON);
x = myObj["name"];

Hãy tự mình thử »



Truy cập các giá trị đối tượng

Bạn có thể truy cập các giá trị đối tượng bằng cách sử dụng ký hiệu DOT (.):

Thí dụ

myjson = '{"tên": "john", "tuổi": 30, "xe": null}'; myobj = json.parse (myjson);
const myObj = JSON.parse(myJSON);

Hãy tự mình thử »
for (const x in myObj) {
  text += x + ", ";
}

Hãy tự mình thử »

Truy cập các giá trị đối tượng

Thí dụ

myjson = '{"tên": "john", "tuổi": 30, "xe": null}'; myobj = json.parse (myjson);
const myObj = JSON.parse(myJSON);

Hãy tự mình thử »
for (const x in myObj) {
  text += myObj[x] + ", ";
}

Hãy tự mình thử »



Hướng dẫn javascript get value from json array by key - javascript nhận giá trị từ mảng json theo khóa

JSON, hoặc ký hiệu đối tượng JavaScript, là tất cả xung quanh chúng ta. Nếu bạn đã từng sử dụng một ứng dụng web, rất có thể nó đã sử dụng JSON để cấu trúc, lưu trữ và truyền dữ liệu giữa các máy chủ và thiết bị của bạn.

Trong bài viết này, chúng tôi sẽ xem xét ngắn gọn sự khác biệt giữa JSON và JavaScript, sau đó nhảy vào các cách khác nhau để phân tích JSON với JavaScript trong trình duyệt và trong các dự án Node.js.

Sự khác biệt giữa JSON và JavaScript

Mặc dù JSON trông giống như JavaScript thông thường, tốt hơn là nên nghĩ về JSON như một định dạng dữ liệu, tương tự như một tệp văn bản. Nó chỉ xảy ra rằng JSON được lấy cảm hứng từ cú pháp JavaScript, đó là lý do tại sao chúng trông rất giống nhau.

Chúng ta hãy xem các đối tượng JSON và mảng JSON và so sánh chúng với các đối tác JavaScript của họ.

Đối tượng JSON vs JavaScript đối tượng theo nghĩa đen

Đầu tiên, đây là đối tượng JSON:

________ 3Jane-profile.json

Sự khác biệt chính giữa đối tượng JSON và đối tượng JavaScript thông thường - còn được gọi là một đối tượng theo nghĩa đen - đi xuống các dấu ngoặc kép. Tất cả các khóa và giá trị loại chuỗi trong một đối tượng JSON phải được bọc trong các dấu ngoặc kép (

{
  "name": "Jane Doe",
  "favorite-game": "Stardew Valley",
  "subscriber": false
}
8).

Biểu nghĩa đối tượng JavaScript linh hoạt hơn một chút. Với các chữ cái đối tượng, bạn không cần phải bọc các phím và chuỗi trong các dấu ngoặc kép. Thay vào đó, bạn có thể sử dụng dấu ngoặc đơn (

{
  "name": "Jane Doe",
  "favorite-game": "Stardew Valley",
  "subscriber": false
}
9) hoặc không sử dụng bất kỳ loại dấu ngoặc kép nào cho các khóa.

Đây là những gì mã trên có thể trông như một đối tượng JavaScript theo nghĩa đen:

const profile = {
  name: 'Jane Doe',
  'favorite-game': 'Stardew Valley',
  subscriber: false
}

Lưu ý rằng khóa

const profile = {
  name: 'Jane Doe',
  'favorite-game': 'Stardew Valley',
  subscriber: false
}
0 được bọc trong các trích dẫn đơn. Với các chữ cái đối tượng, bạn sẽ cần phải bọc các khóa trong đó các từ được phân tách bằng dấu gạch ngang (
const profile = {
  name: 'Jane Doe',
  'favorite-game': 'Stardew Valley',
  subscriber: false
}
1) trong các trích dẫn.

Nếu bạn muốn tránh các dấu ngoặc kép, bạn có thể viết lại khóa để sử dụng vỏ lạc đà (

const profile = {
  name: 'Jane Doe',
  'favorite-game': 'Stardew Valley',
  subscriber: false
}
2) hoặc tách các từ bằng dấu gạch dưới (
const profile = {
  name: 'Jane Doe',
  'favorite-game': 'Stardew Valley',
  subscriber: false
}
3) thay thế.

Mảng json vs mảng javascript

Các mảng JSON hoạt động khá giống với các mảng trong JavaScript và có thể chứa các chuỗi, booleans, số và các đối tượng JSON khác. Ví dụ:

[
  {
    "name": "Jane Doe",
    "favorite-game": "Stardew Valley",
    "subscriber": false
  },
  {
    "name": "John Doe",
    "favorite-game": "Dragon Quest XI",
    "subscriber": true
  }
]
profiles.json

Đây là những gì có thể trông như thế nào trong JavaScript đơn giản:

const profiles = [
  {
    name: 'Jane Doe',
    'favorite-game': 'Stardew Valley',
    subscriber: false
  },
  {
    name: 'John Doe',
    'favorite-game': 'Dragon Quest XI',
    subscriber: true
  }
];

Json dưới dạng chuỗi

Bạn có thể tự hỏi, nếu có các đối tượng và mảng JSON, bạn không thể sử dụng nó trong chương trình của mình như một đối tượng JavaScript thông thường theo nghĩa đen hoặc mảng?

Lý do tại sao bạn không thể làm điều này là JSON thực sự chỉ là một chuỗi.

Ví dụ: khi bạn viết JSON vào một tệp riêng biệt như với

const profile = {
  name: 'Jane Doe',
  'favorite-game': 'Stardew Valley',
  subscriber: false
}
4 hoặc
const profile = {
  name: 'Jane Doe',
  'favorite-game': 'Stardew Valley',
  subscriber: false
}
5 ở trên, tệp đó thực sự chứa văn bản dưới dạng đối tượng hoặc mảng JSON, trông giống như JavaScript.

Và nếu bạn đưa ra yêu cầu cho API, nó sẽ trả về một cái gì đó như thế này:

{"name":"Jane Doe","favorite-game":"Stardew Valley","subscriber":false}

Cũng giống như với các tệp văn bản, nếu bạn muốn sử dụng JSON trong dự án của mình, bạn sẽ cần phân tích hoặc thay đổi nó thành thứ gì đó ngôn ngữ lập trình của bạn có thể hiểu. Chẳng hạn, phân tích cú pháp đối tượng JSON trong Python sẽ tạo ra một từ điển.

Với sự hiểu biết đó, chúng ta hãy xem xét các cách khác nhau để phân tích JSON trong JavaScript.

Cách phân tích cú pháp JSON trong trình duyệt

Nếu bạn đang làm việc với JSON trong trình duyệt, có lẽ bạn đang nhận hoặc gửi dữ liệu qua API.

Hãy xem một vài ví dụ.

Cách phân tích cú pháp JSON với const profile = { name: 'Jane Doe', 'favorite-game': 'Stardew Valley', subscriber: false } 6

Cách dễ nhất để lấy dữ liệu từ API là với

const profile = {
  name: 'Jane Doe',
  'favorite-game': 'Stardew Valley',
  subscriber: false
}
6, bao gồm phương thức
const profile = {
  name: 'Jane Doe',
  'favorite-game': 'Stardew Valley',
  subscriber: false
}
8 để phân tích các phản hồi của JSON thành một đối tượng JavaScript có thể sử dụng theo nghĩa đen hoặc mảng tự động.

Dưới đây là một số mã sử dụng

const profile = {
  name: 'Jane Doe',
  'favorite-game': 'Stardew Valley',
  subscriber: false
}
6 để thực hiện yêu cầu
[
  {
    "name": "Jane Doe",
    "favorite-game": "Stardew Valley",
    "subscriber": false
  },
  {
    "name": "John Doe",
    "favorite-game": "Dragon Quest XI",
    "subscriber": true
  }
]
0 cho một trò đùa có chủ đề của nhà phát triển từ API Chuck Norris MIỄN PHÍ:

fetch('https://api.chucknorris.io/jokes/random?category=dev')
  .then(res => res.json()) // the .json() method parses the JSON response into a JS object literal
  .then(data => console.log(data));

Nếu bạn chạy mã đó trong trình duyệt, bạn sẽ thấy một cái gì đó như thế này đã đăng nhập vào bảng điều khiển:

{
    "categories": ["dev"],
    "created_at": "2020-01-05 13:42:19.324003",
    "icon_url": "https://assets.chucknorris.host/img/avatar/chuck-norris.png",
    "id": "elgv2wkvt8ioag6xywykbq",
    "updated_at": "2020-01-05 13:42:19.324003",
    "url": "https://api.chucknorris.io/jokes/elgv2wkvt8ioag6xywykbq",
    "value": "Chuck Norris's keyboard doesn't have a Ctrl key because nothing controls Chuck Norris."
}

Mặc dù nó trông giống như một đối tượng JSON, nhưng nó thực sự là một đối tượng JavaScript theo nghĩa đen và bạn có thể sử dụng nó một cách tự do trong chương trình của mình.

Cách xâu chuỗi JSON với [ { "name": "Jane Doe", "favorite-game": "Stardew Valley", "subscriber": false }, { "name": "John Doe", "favorite-game": "Dragon Quest XI", "subscriber": true } ] 1

Nhưng nếu bạn muốn gửi dữ liệu đến API thì sao?

Chẳng hạn, giả sử bạn muốn gửi một trò đùa Chuck Norris cho API Chuck Norris để người khác có thể đọc nó sau.

Đầu tiên, bạn sẽ viết trò đùa của mình như một đối tượng JS theo nghĩa đen:

(function() {
  
  var array = [
    {
      amount: 12185,
      job: "GAPA",
      month: "JANUARY",
      year: "2010"
    },
    {
      amount: 147421,
      job: "GAPA",
      month: "MAY",
      year: "2010"
    },
    {
      amount: 2347,
      job: "GAPA",
      month: "AUGUST",
      year: "2010"
    }
  ];
  
  var entry;
  var name;
  var count;
  
  entry = array[0];
  
  display("Keys for entry 0:");
  count = 0;
  for (name in entry) {
    display(name);
    ++count;
  }
  display("Total enumerable keys: " + count);

  // === Basic utility functions
  
  function display(msg) {
    var p = document.createElement('p');
    p.innerHTML = msg;
    document.body.appendChild(p);
  }
  
})();
0

Sau đó, vì bạn đang gửi dữ liệu đến API, bạn cần phải biến đối tượng

[
  {
    "name": "Jane Doe",
    "favorite-game": "Stardew Valley",
    "subscriber": false
  },
  {
    "name": "John Doe",
    "favorite-game": "Dragon Quest XI",
    "subscriber": true
  }
]
2 của mình thành một chuỗi JSON.

May mắn thay, JavaScript bao gồm một phương pháp siêu hữu ích để làm điều đó -

[
  {
    "name": "Jane Doe",
    "favorite-game": "Stardew Valley",
    "subscriber": false
  },
  {
    "name": "John Doe",
    "favorite-game": "Dragon Quest XI",
    "subscriber": true
  }
]
1:

(function() {
  
  var array = [
    {
      amount: 12185,
      job: "GAPA",
      month: "JANUARY",
      year: "2010"
    },
    {
      amount: 147421,
      job: "GAPA",
      month: "MAY",
      year: "2010"
    },
    {
      amount: 2347,
      job: "GAPA",
      month: "AUGUST",
      year: "2010"
    }
  ];
  
  var entry;
  var name;
  var count;
  
  entry = array[0];
  
  display("Keys for entry 0:");
  count = 0;
  for (name in entry) {
    display(name);
    ++count;
  }
  display("Total enumerable keys: " + count);

  // === Basic utility functions
  
  function display(msg) {
    var p = document.createElement('p');
    p.innerHTML = msg;
    document.body.appendChild(p);
  }
  
})();
1

Mặc dù chúng tôi đang chuyển đổi một đối tượng theo nghĩa đen thành chuỗi JSON trong ví dụ này,

[
  {
    "name": "Jane Doe",
    "favorite-game": "Stardew Valley",
    "subscriber": false
  },
  {
    "name": "John Doe",
    "favorite-game": "Dragon Quest XI",
    "subscriber": true
  }
]
1 cũng hoạt động với các mảng.

Cuối cùng, bạn chỉ cần gửi trò đùa JSON Stringified của mình đến API với yêu cầu

[
  {
    "name": "Jane Doe",
    "favorite-game": "Stardew Valley",
    "subscriber": false
  },
  {
    "name": "John Doe",
    "favorite-game": "Dragon Quest XI",
    "subscriber": true
  }
]
5.

Lưu ý rằng API cười Chuck Norris không thực sự có tính năng này. Nhưng nếu nó đã làm, đây là những gì mã có thể trông như thế nào:

(function() {
  
  var array = [
    {
      amount: 12185,
      job: "GAPA",
      month: "JANUARY",
      year: "2010"
    },
    {
      amount: 147421,
      job: "GAPA",
      month: "MAY",
      year: "2010"
    },
    {
      amount: 2347,
      job: "GAPA",
      month: "AUGUST",
      year: "2010"
    }
  ];
  
  var entry;
  var name;
  var count;
  
  entry = array[0];
  
  display("Keys for entry 0:");
  count = 0;
  for (name in entry) {
    display(name);
    ++count;
  }
  display("Total enumerable keys: " + count);

  // === Basic utility functions
  
  function display(msg) {
    var p = document.createElement('p');
    p.innerHTML = msg;
    document.body.appendChild(p);
  }
  
})();
2

Và chỉ như vậy, bạn đã phân tích cú pháp JSON đến với

const profile = {
  name: 'Jane Doe',
  'favorite-game': 'Stardew Valley',
  subscriber: false
}
6 và đã sử dụng
[
  {
    "name": "Jane Doe",
    "favorite-game": "Stardew Valley",
    "subscriber": false
  },
  {
    "name": "John Doe",
    "favorite-game": "Dragon Quest XI",
    "subscriber": true
  }
]
1 để chuyển đổi một đối tượng JS theo nghĩa đen thành chuỗi JSON.

Cách làm việc với các tệp JSON cục bộ trong trình duyệt

Thật không may, không thể (hoặc khuyến khích) tải tệp JSON cục bộ trong trình duyệt.

const profile = {
  name: 'Jane Doe',
  'favorite-game': 'Stardew Valley',
  subscriber: false
}
6 sẽ ném lỗi nếu bạn cố tải một tệp cục bộ. Ví dụ: giả sử bạn có tệp JSON với một số trò đùa:

(function() {
  
  var array = [
    {
      amount: 12185,
      job: "GAPA",
      month: "JANUARY",
      year: "2010"
    },
    {
      amount: 147421,
      job: "GAPA",
      month: "MAY",
      year: "2010"
    },
    {
      amount: 2347,
      job: "GAPA",
      month: "AUGUST",
      year: "2010"
    }
  ];
  
  var entry;
  var name;
  var count;
  
  entry = array[0];
  
  display("Keys for entry 0:");
  count = 0;
  for (name in entry) {
    display(name);
    ++count;
  }
  display("Total enumerable keys: " + count);

  // === Basic utility functions
  
  function display(msg) {
    var p = document.createElement('p');
    p.innerHTML = msg;
    document.body.appendChild(p);
  }
  
})();
3jokes.json

Và bạn muốn phân tích nó và tạo một danh sách các trò đùa trên một trang HTML đơn giản.

Nếu bạn tạo một trang với phần sau và mở nó trong trình duyệt của bạn:

(function() {
  
  var array = [
    {
      amount: 12185,
      job: "GAPA",
      month: "JANUARY",
      year: "2010"
    },
    {
      amount: 147421,
      job: "GAPA",
      month: "MAY",
      year: "2010"
    },
    {
      amount: 2347,
      job: "GAPA",
      month: "AUGUST",
      year: "2010"
    }
  ];
  
  var entry;
  var name;
  var count;
  
  entry = array[0];
  
  display("Keys for entry 0:");
  count = 0;
  for (name in entry) {
    display(name);
    ++count;
  }
  display("Total enumerable keys: " + count);

  // === Basic utility functions
  
  function display(msg) {
    var p = document.createElement('p');
    p.innerHTML = msg;
    document.body.appendChild(p);
  }
  
})();
4index.html

Bạn sẽ thấy điều này trong bảng điều khiển:

(function() {
  
  var array = [
    {
      amount: 12185,
      job: "GAPA",
      month: "JANUARY",
      year: "2010"
    },
    {
      amount: 147421,
      job: "GAPA",
      month: "MAY",
      year: "2010"
    },
    {
      amount: 2347,
      job: "GAPA",
      month: "AUGUST",
      year: "2010"
    }
  ];
  
  var entry;
  var name;
  var count;
  
  entry = array[0];
  
  display("Keys for entry 0:");
  count = 0;
  for (name in entry) {
    display(name);
    ++count;
  }
  display("Total enumerable keys: " + count);

  // === Basic utility functions
  
  function display(msg) {
    var p = document.createElement('p');
    p.innerHTML = msg;
    document.body.appendChild(p);
  }
  
})();
5

Theo mặc định, các trình duyệt không cho phép truy cập vào các tệp cục bộ vì lý do bảo mật. Đây là một điều tốt, và bạn không nên cố gắng làm việc xung quanh hành vi này.

Thay vào đó, điều tốt nhất để làm là chuyển đổi tệp JSON cục bộ thành JavaScript. May mắn thay, điều này khá dễ dàng vì cú pháp JSON rất giống với JavaScript.

Tất cả những gì bạn cần làm là tạo một tệp mới và khai báo JSON của bạn là một biến:

(function() {
  
  var array = [
    {
      amount: 12185,
      job: "GAPA",
      month: "JANUARY",
      year: "2010"
    },
    {
      amount: 147421,
      job: "GAPA",
      month: "MAY",
      year: "2010"
    },
    {
      amount: 2347,
      job: "GAPA",
      month: "AUGUST",
      year: "2010"
    }
  ];
  
  var entry;
  var name;
  var count;
  
  entry = array[0];
  
  display("Keys for entry 0:");
  count = 0;
  for (name in entry) {
    display(name);
    ++count;
  }
  display("Total enumerable keys: " + count);

  // === Basic utility functions
  
  function display(msg) {
    var p = document.createElement('p');
    p.innerHTML = msg;
    document.body.appendChild(p);
  }
  
})();
6jokes.js

Và thêm nó vào trang của bạn dưới dạng tập lệnh riêng biệt:

(function() {
  
  var array = [
    {
      amount: 12185,
      job: "GAPA",
      month: "JANUARY",
      year: "2010"
    },
    {
      amount: 147421,
      job: "GAPA",
      month: "MAY",
      year: "2010"
    },
    {
      amount: 2347,
      job: "GAPA",
      month: "AUGUST",
      year: "2010"
    }
  ];
  
  var entry;
  var name;
  var count;
  
  entry = array[0];
  
  display("Keys for entry 0:");
  count = 0;
  for (name in entry) {
    display(name);
    ++count;
  }
  display("Total enumerable keys: " + count);

  // === Basic utility functions
  
  function display(msg) {
    var p = document.createElement('p');
    p.innerHTML = msg;
    document.body.appendChild(p);
  }
  
})();
7

Bạn sẽ có thể sử dụng mảng

[
  {
    "name": "Jane Doe",
    "favorite-game": "Stardew Valley",
    "subscriber": false
  },
  {
    "name": "John Doe",
    "favorite-game": "Dragon Quest XI",
    "subscriber": true
  }
]
9 một cách tự do trong mã của bạn.

Bạn cũng có thể sử dụng JavaScript

const profiles = [
  {
    name: 'Jane Doe',
    'favorite-game': 'Stardew Valley',
    subscriber: false
  },
  {
    name: 'John Doe',
    'favorite-game': 'Dragon Quest XI',
    subscriber: true
  }
];
0 để làm điều tương tự, nhưng đó là một chút ngoài phạm vi của bài viết này.

Nhưng điều gì sẽ xảy ra nếu bạn muốn làm việc với các tệp JSON cục bộ và cài đặt Node.js? Hãy xem cách làm điều đó ngay bây giờ.

Cách phân tích cú pháp JSON trong Node.js

Node.js là thời gian chạy JavaScript cho phép bạn chạy JavaScript bên ngoài trình duyệt. Bạn có thể đọc tất cả về Node.js ở đây.

Cho dù bạn sử dụng Node.js để chạy mã cục bộ trên máy tính của bạn hoặc để chạy toàn bộ ứng dụng web trên máy chủ, thật tốt khi biết cách làm việc với JSON.

Đối với các ví dụ sau, chúng tôi sẽ sử dụng cùng một tệp

const profiles = [
  {
    name: 'Jane Doe',
    'favorite-game': 'Stardew Valley',
    subscriber: false
  },
  {
    name: 'John Doe',
    'favorite-game': 'Dragon Quest XI',
    subscriber: true
  }
];
1:

(function() {
  
  var array = [
    {
      amount: 12185,
      job: "GAPA",
      month: "JANUARY",
      year: "2010"
    },
    {
      amount: 147421,
      job: "GAPA",
      month: "MAY",
      year: "2010"
    },
    {
      amount: 2347,
      job: "GAPA",
      month: "AUGUST",
      year: "2010"
    }
  ];
  
  var entry;
  var name;
  var count;
  
  entry = array[0];
  
  display("Keys for entry 0:");
  count = 0;
  for (name in entry) {
    display(name);
    ++count;
  }
  display("Total enumerable keys: " + count);

  // === Basic utility functions
  
  function display(msg) {
    var p = document.createElement('p');
    p.innerHTML = msg;
    document.body.appendChild(p);
  }
  
})();
3jokes.json

Cách phân tích tệp JSON với const profiles = [ { name: 'Jane Doe', 'favorite-game': 'Stardew Valley', subscriber: false }, { name: 'John Doe', 'favorite-game': 'Dragon Quest XI', subscriber: true } ]; 2

Hãy bắt đầu với phương pháp dễ nhất.

Nếu bạn có tệp JSON cục bộ, tất cả những gì bạn cần làm là sử dụng

const profiles = [
  {
    name: 'Jane Doe',
    'favorite-game': 'Stardew Valley',
    subscriber: false
  },
  {
    name: 'John Doe',
    'favorite-game': 'Dragon Quest XI',
    subscriber: true
  }
];
2 để tải nó như bất kỳ mô -đun Node.js nào khác:

(function() {
  
  var array = [
    {
      amount: 12185,
      job: "GAPA",
      month: "JANUARY",
      year: "2010"
    },
    {
      amount: 147421,
      job: "GAPA",
      month: "MAY",
      year: "2010"
    },
    {
      amount: 2347,
      job: "GAPA",
      month: "AUGUST",
      year: "2010"
    }
  ];
  
  var entry;
  var name;
  var count;
  
  entry = array[0];
  
  display("Keys for entry 0:");
  count = 0;
  for (name in entry) {
    display(name);
    ++count;
  }
  display("Total enumerable keys: " + count);

  // === Basic utility functions
  
  function display(msg) {
    var p = document.createElement('p');
    p.innerHTML = msg;
    document.body.appendChild(p);
  }
  
})();
9

Tệp JSON sẽ tự động phân tích cú pháp cho bạn và bạn có thể bắt đầu sử dụng nó trong dự án của mình:

for (name in entry) {
  if (entry.hasOwnProperty(name)) {
    display(name);
    ++count;
  }
}
0

Lưu ý rằng đây là đồng bộ, có nghĩa là chương trình của bạn sẽ dừng cho đến khi nó phân tích toàn bộ tệp trước khi tiếp tục. Các tệp JSON thực sự lớn có thể khiến chương trình của bạn chậm lại, vì vậy hãy cẩn thận với điều đó.

Ngoài ra, vì phân tích cú pháp JSON theo cách này tải toàn bộ vào bộ nhớ, nên tốt hơn là sử dụng phương pháp này cho các tệp JSON tĩnh. Nếu tệp JSON thay đổi trong khi chương trình của bạn đang chạy, bạn sẽ không có quyền truy cập vào các thay đổi đó cho đến khi bạn khởi động lại chương trình của mình và phân tích tệp JSON được cập nhật.

Cách phân tích tệp JSON với const profiles = [ { name: 'Jane Doe', 'favorite-game': 'Stardew Valley', subscriber: false }, { name: 'John Doe', 'favorite-game': 'Dragon Quest XI', subscriber: true } ]; 4) và const profiles = [ { name: 'Jane Doe', 'favorite-game': 'Stardew Valley', subscriber: false }, { name: 'John Doe', 'favorite-game': 'Dragon Quest XI', subscriber: true } ]; 5

Đây là cách truyền thống hơn (vì thiếu thuật ngữ tốt hơn) để phân tích các tệp JSON trong các dự án Node.js - đọc tệp với mô -đun

const profiles = [
  {
    name: 'Jane Doe',
    'favorite-game': 'Stardew Valley',
    subscriber: false
  },
  {
    name: 'John Doe',
    'favorite-game': 'Dragon Quest XI',
    subscriber: true
  }
];
6 (hệ thống tệp), sau đó phân tích cú pháp với
const profiles = [
  {
    name: 'Jane Doe',
    'favorite-game': 'Stardew Valley',
    subscriber: false
  },
  {
    name: 'John Doe',
    'favorite-game': 'Dragon Quest XI',
    subscriber: true
  }
];
5.

Hãy xem làm thế nào để làm điều này với phương pháp

const profiles = [
  {
    name: 'Jane Doe',
    'favorite-game': 'Stardew Valley',
    subscriber: false
  },
  {
    name: 'John Doe',
    'favorite-game': 'Dragon Quest XI',
    subscriber: true
  }
];
8. Đầu tiên, thêm mô -đun
const profiles = [
  {
    name: 'Jane Doe',
    'favorite-game': 'Stardew Valley',
    subscriber: false
  },
  {
    name: 'John Doe',
    'favorite-game': 'Dragon Quest XI',
    subscriber: true
  }
];
6 vào dự án của bạn:

for (name in entry) {
  if (entry.hasOwnProperty(name)) {
    display(name);
    ++count;
  }
}
1

Sau đó, tạo một biến mới để lưu trữ đầu ra của tệp

const profiles = [
  {
    name: 'Jane Doe',
    'favorite-game': 'Stardew Valley',
    subscriber: false
  },
  {
    name: 'John Doe',
    'favorite-game': 'Dragon Quest XI',
    subscriber: true
  }
];
1 và đặt nó bằng
const profiles = [
  {
    name: 'Jane Doe',
    'favorite-game': 'Stardew Valley',
    subscriber: false
  },
  {
    name: 'John Doe',
    'favorite-game': 'Dragon Quest XI',
    subscriber: true
  }
];
8:

for (name in entry) {
  if (entry.hasOwnProperty(name)) {
    display(name);
    ++count;
  }
}
2

const profiles = [
  {
    name: 'Jane Doe',
    'favorite-game': 'Stardew Valley',
    subscriber: false
  },
  {
    name: 'John Doe',
    'favorite-game': 'Dragon Quest XI',
    subscriber: true
  }
];
8 mất một vài lập luận. Đầu tiên là đường dẫn đến tệp bạn muốn đọc:

for (name in entry) {
  if (entry.hasOwnProperty(name)) {
    display(name);
    ++count;
  }
}
3

Nhưng nếu bạn đăng nhập

{"name":"Jane Doe","favorite-game":"Stardew Valley","subscriber":false}
3 vào bảng điều khiển bây giờ, bạn sẽ thấy một cái gì đó như thế này:

for (name in entry) {
  if (entry.hasOwnProperty(name)) {
    display(name);
    ++count;
  }
}
4

Điều đó chỉ có nghĩa là mô-đun

const profiles = [
  {
    name: 'Jane Doe',
    'favorite-game': 'Stardew Valley',
    subscriber: false
  },
  {
    name: 'John Doe',
    'favorite-game': 'Dragon Quest XI',
    subscriber: true
  }
];
6 đang đọc tệp, nhưng nó không biết mã hóa hoặc định dạng tệp được sử dụng. Cần nói nó làm thế nào các tập tin được mã hóa.

Đối với các tệp dựa trên văn bản, mã hóa thường là

{"name":"Jane Doe","favorite-game":"Stardew Valley","subscriber":false}
6:

for (name in entry) {
  if (entry.hasOwnProperty(name)) {
    display(name);
    ++count;
  }
}
5

Bây giờ nếu bạn đăng nhập

{"name":"Jane Doe","favorite-game":"Stardew Valley","subscriber":false}
3 vào bảng điều khiển, bạn sẽ thấy nội dung của tệp.

Nhưng cho đến nay chúng tôi chỉ đọc tệp và nó vẫn là một chuỗi. Chúng ta sẽ cần sử dụng một phương pháp khác để phân tích

{"name":"Jane Doe","favorite-game":"Stardew Valley","subscriber":false}
3 vào một đối tượng hoặc mảng JavaScript có thể sử dụng.

Để làm điều đó, chúng tôi sẽ sử dụng

const profiles = [
  {
    name: 'Jane Doe',
    'favorite-game': 'Stardew Valley',
    subscriber: false
  },
  {
    name: 'John Doe',
    'favorite-game': 'Dragon Quest XI',
    subscriber: true
  }
];
5:

for (name in entry) {
  if (entry.hasOwnProperty(name)) {
    display(name);
    ++count;
  }
}
6

Như tên cho thấy,

const profiles = [
  {
    name: 'Jane Doe',
    'favorite-game': 'Stardew Valley',
    subscriber: false
  },
  {
    name: 'John Doe',
    'favorite-game': 'Dragon Quest XI',
    subscriber: true
  }
];
5 lấy một chuỗi JSON và phân tích cú pháp nó vào một đối tượng JavaScript theo nghĩa đen hoặc mảng.

Giống như với phương pháp

fetch('https://api.chucknorris.io/jokes/random?category=dev')
  .then(res => res.json()) // the .json() method parses the JSON response into a JS object literal
  .then(data => console.log(data));
1 ở trên,
const profiles = [
  {
    name: 'Jane Doe',
    'favorite-game': 'Stardew Valley',
    subscriber: false
  },
  {
    name: 'John Doe',
    'favorite-game': 'Dragon Quest XI',
    subscriber: true
  }
];
8 là một phương pháp đồng bộ, có nghĩa là nó có thể khiến chương trình của bạn chậm lại nếu đọc một tệp lớn, JSON hoặc cách khác.

Ngoài ra, nó chỉ đọc tệp một lần và tải nó vào bộ nhớ. Nếu tệp thay đổi, bạn sẽ cần đọc lại tệp tại một số điểm. Để làm cho mọi thứ dễ dàng hơn, bạn có thể muốn tạo một chức năng đơn giản để đọc các tệp.

Đây là những gì có thể trông như thế nào:

for (name in entry) {
  if (entry.hasOwnProperty(name)) {
    display(name);
    ++count;
  }
}
7

Cách phân tích cú pháp JSON với fetch('https://api.chucknorris.io/jokes/random?category=dev') .then(res => res.json()) // the .json() method parses the JSON response into a JS object literal .then(data => console.log(data)); 3) và const profiles = [ { name: 'Jane Doe', 'favorite-game': 'Stardew Valley', subscriber: false }, { name: 'John Doe', 'favorite-game': 'Dragon Quest XI', subscriber: true } ]; 5

Phương pháp

fetch('https://api.chucknorris.io/jokes/random?category=dev')
  .then(res => res.json()) // the .json() method parses the JSON response into a JS object literal
  .then(data => console.log(data));
5 rất giống với
const profiles = [
  {
    name: 'Jane Doe',
    'favorite-game': 'Stardew Valley',
    subscriber: false
  },
  {
    name: 'John Doe',
    'favorite-game': 'Dragon Quest XI',
    subscriber: true
  }
];
8, ngoại trừ việc nó hoạt động không đồng bộ. Điều này thật tuyệt nếu bạn có một tệp lớn để đọc và bạn không muốn nó giữ phần còn lại của mã.

Đây là một ví dụ cơ bản:

for (name in entry) {
  if (entry.hasOwnProperty(name)) {
    display(name);
    ++count;
  }
}
8

Cho đến nay, điều này trông tương tự như những gì chúng tôi đã làm với

const profiles = [
  {
    name: 'Jane Doe',
    'favorite-game': 'Stardew Valley',
    subscriber: false
  },
  {
    name: 'John Doe',
    'favorite-game': 'Dragon Quest XI',
    subscriber: true
  }
];
8, ngoại trừ chúng tôi không gán nó cho một biến như
{"name":"Jane Doe","favorite-game":"Stardew Valley","subscriber":false}
3. Bởi vì nó không đồng bộ, bất kỳ mã nào sau
fetch('https://api.chucknorris.io/jokes/random?category=dev')
  .then(res => res.json()) // the .json() method parses the JSON response into a JS object literal
  .then(data => console.log(data));
5, nó sẽ chạy trước khi đọc xong tệp.

Thay vào đó, chúng tôi sẽ sử dụng chức năng gọi lại và phân tích JSON bên trong nó:

for (name in entry) {
  if (entry.hasOwnProperty(name)) {
    display(name);
    ++count;
  }
}
9

Mà in như sau cho bảng điều khiển:

{
  "name": "Jane Doe",
  "favorite-game": "Stardew Valley",
  "subscriber": false
}
0

Giống như với

const profiles = [
  {
    name: 'Jane Doe',
    'favorite-game': 'Stardew Valley',
    subscriber: false
  },
  {
    name: 'John Doe',
    'favorite-game': 'Dragon Quest XI',
    subscriber: true
  }
];
8,
fetch('https://api.chucknorris.io/jokes/random?category=dev')
  .then(res => res.json()) // the .json() method parses the JSON response into a JS object literal
  .then(data => console.log(data));
5 tải tệp vào bộ nhớ, nghĩa là bạn sẽ cần đọc lại tệp nếu nó thay đổi.

Ngoài ra, mặc dù

fetch('https://api.chucknorris.io/jokes/random?category=dev')
  .then(res => res.json()) // the .json() method parses the JSON response into a JS object literal
  .then(data => console.log(data));
5 không đồng bộ, cuối cùng nó tải toàn bộ tệp mà nó đang đọc vào bộ nhớ. Nếu bạn có một tệp lớn, thay vào đó, tốt hơn là xem vào các luồng node.js.

Cách xâu chuỗi JSON với [ { "name": "Jane Doe", "favorite-game": "Stardew Valley", "subscriber": false }, { "name": "John Doe", "favorite-game": "Dragon Quest XI", "subscriber": true } ] 1 trong Node.js

Cuối cùng, nếu bạn đang phân tích JSON với Node.js, rất có thể bạn sẽ cần trả lại JSON tại một số điểm, có thể là phản hồi API.

May mắn thay, điều này hoạt động giống như trong trình duyệt - chỉ cần sử dụng

[
  {
    "name": "Jane Doe",
    "favorite-game": "Stardew Valley",
    "subscriber": false
  },
  {
    "name": "John Doe",
    "favorite-game": "Dragon Quest XI",
    "subscriber": true
  }
]
1 để chuyển đổi các chữ cái hoặc mảng đối tượng JavaScript thành chuỗi JSON:

{
  "name": "Jane Doe",
  "favorite-game": "Stardew Valley",
  "subscriber": false
}
1

Và đó là nó! Chúng tôi đã đề cập đến mọi thứ bạn cần biết về việc làm việc với JSON trong các dự án trình duyệt và trong Node.js.

Bây giờ hãy ra khỏi đó và phân tích hoặc xâu chuỗi JSON cho nội dung trái tim của bạn.

Tôi đã bỏ lỡ điều gì đó? Làm thế nào để bạn phân tích JSON trong các dự án của bạn? Hãy cho tôi biết trên Twitter.



Học mã miễn phí. Chương trình giảng dạy nguồn mở của Freecodecamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu

Làm thế nào tôi có thể nhận được dữ liệu cụ thể từ JSON?

Thay vào đó, nhận được một thuộc tính cụ thể từ đối tượng phản hồi JSON, bạn chọn thuộc tính chính xác mà bạn muốn và rút nó ra thông qua ký hiệu DOT. DOT (.) Sau khi phản hồi (tên của tải trọng JSON, như được định nghĩa tùy ý trong hàm jQuery AJAX) là cách bạn truy cập các giá trị bạn muốn từ đối tượng JSON.select the exact property you want and pull that out through dot notation. The dot ( . ) after response (the name of the JSON payload, as defined arbitrarily in the jQuery AJAX function) is how you access the values you want from the JSON object.

JSON vượt qua Key như thế nào

Một đối tượng JSON chứa số không, một hoặc nhiều cặp giá trị khóa, còn được gọi là thuộc tính.Đối tượng được bao quanh bởi niềng răng xoăn {}.Mỗi cặp giá trị khóa được phân tách bằng dấu phẩy.Thứ tự của cặp giá trị khóa là không liên quan.Every key-value pair is separated by a comma. The order of the key-value pair is irrelevant.

Làm thế nào bạn sẽ có được chìa khóa

Sử dụng đối tượng.Phương thức khóa () để truy xuất tất cả các tên khóa từ một đối tượng ...
Sử dụng các đối tượng để lưu trữ dữ liệu làm thuộc tính (cặp giá trị khóa) ..
Tên chính phải là chuỗi, ký hiệu hoặc số ..
Giá trị có thể là bất kỳ loại nào ..

Khóa JSON là gì?

Hai phần chính tạo nên JSON là khóa và giá trị.Cùng nhau họ tạo ra một cặp khóa/giá trị.Khóa: Một khóa luôn là một chuỗi được đặt trong các dấu ngoặc kép.Giá trị: Giá trị có thể là một chuỗi, số, biểu thức boolean, mảng hoặc đối tượng.A key is always a string enclosed in quotation marks. Value: A value can be a string, number, boolean expression, array, or object.