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 ( 2), bạn đã bỏ qua ký hiệu đó thành biểu đồ đối tượng JavaScript. . Show
Không, nó là 3.
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 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 4:
Ví dụ làm việc đầy đủ:
Vì bạn đang đối phó với các đối tượng thô, vòng lặp 4 ở trên là tốt (trừ khi ai đó đã phạm tội với 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 7 vào đó: 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ệ:
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 JavaScriptBạ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); Hãy tự mình thử » Truy cập các giá trị đối tượngBạ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); 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); Hãy tự mình thử » Truy cập các giá trị đối tượngBạ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); Hãy tự mình thử » 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); Hãy tự mình thử » Hãy tự mình thử » 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. 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ọ. Đầu tiên, đây là đối tượng 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 ( 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 ( 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:
Lưu ý rằng khóa 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 ( 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 đà ( 2) hoặc tách các từ bằng dấu gạch dưới ( 3) thay thế.Mảng json vs mảng javascriptCá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ụ: profiles.jsonĐây là những gì có thể trông như thế nào trong JavaScript đơn giản:
Json dưới dạng chuỗiBạ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 4 hoặc 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:
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ệtNế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 } 6Cách dễ nhất để lấy dữ liệu từ API là với 6, bao gồm phương thức 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 6 để thực hiện yêu cầu 0 cho một trò đùa có chủ đề của nhà phát triển từ API Chuck Norris MIỄN PHÍ:
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:
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 } ] 1Như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: 0Sau đó, vì bạn đang gửi dữ liệu đến API, bạn cần phải biến đối tượng 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 đó - 1: 1Mặ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, 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 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: 2Và chỉ như vậy, bạn đã phân tích cú pháp JSON đến với 6 và đã sử dụng 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ệtThậ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. 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: 3jokes.jsonVà 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: 4index.htmlBạn sẽ thấy điều này trong bảng điều khiển: 5Theo 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: 6jokes.jsVà thêm nó vào trang của bạn dưới dạng tập lệnh riêng biệt: 7Bạn sẽ có thể sử dụng mảng 9 một cách tự do trong mã của bạn.Bạn cũng có thể sử dụng JavaScript 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.jsNode.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 1: 3jokes.jsonCá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 } ]; 2Hã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 2 để tải nó như bất kỳ mô -đun Node.js nào khác: 9Tệ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: 0Lư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 6 (hệ thống tệp), sau đó phân tích cú pháp với 5.Hãy xem làm thế nào để làm điều này với phương pháp 8. Đầu tiên, thêm mô -đun 6 vào dự án của bạn: 1Sau đó, tạo một biến mới để lưu trữ đầu ra của tệp 1 và đặt nó bằng 8: 2 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: 3Nhưng nếu bạn đăng nhập 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: 4Điều đó chỉ có nghĩa là mô-đun 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à 6: 5Bây giờ nếu bạn đăng nhập 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 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 5: 6Như tên cho thấy, 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 1 ở trên, 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: 7Cá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 } ]; 5Phương pháp 5 rất giống với 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: 8Cho đến nay, điều này trông tương tự như những gì chúng tôi đã làm với 8, ngoại trừ chúng tôi không gán nó cho một biến như 3. Bởi vì nó không đồng bộ, bất kỳ mã nào sau 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ó: 9Mà in như sau cho bảng điều khiển: 0Giống như với 8, 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ù 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.jsCuố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 1 để chuyển đổi các chữ cái hoặc mảng đối tượng JavaScript thành chuỗi JSON: 1Và đó 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àoMộ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óaSử 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. |