Xử lý JSON trong JAVASCRIPT

Ngày đăng: 23/10/2020   -    Cập nhật: 31/10/2020
Trong bài viết này, bạn sẽ được tìm hiểu về cách mã hóa (endcode) và giải mã dữ liệu (decode) JSON trong JavaScript.


Xử lý JSON trong JAVASCRIPT


Để bắt đầu.


Trước tiên bạn cần biết....



1. JSON LÀ GÌ?



JSON là viết tắt của JavaScript Object Notation.


JSONđịnh dạng trao đổi dữ liệu (phổ biến) cực kỳ nhẹ để trao đổi dữ liệu giữa máy chủ và máy khách.


Chúng ta có thể nhanh chóng và dễ dàng để tạo ra và phân tích cú pháp của JSON.


Giống như XML, JSON cũng là một định dạng dựa trên văn bản dễ viết và dễ hiểu cho cả người và máy tính.


Nhưng không giống như XML, cấu trúc dữ liệu JSON chiếm ít băng thông hơn các phiên bản XML của chúng.


JSON dựa trên hai cấu trúc cơ bản:



  • Đối tượng: Đây được định nghĩa là một tập hợp không có thứ tự của các cặp key / value (tức là key: value). Mỗi đối tượng bắt đầu bằng dấu ngoặc nhọn bên trái { và kết thúc bằng dấu ngoặc nhọn bên phải }. Nhiều cặp key: value được phân tách bằng dấu phẩy ,.


  • Mảng: Đây được định nghĩa là danh sách các giá trị có thứ tự. Một mảng bắt đầu bằng dấu ngoặc trái [ và kết thúc bằng dấu ngoặc phải ]. Các giá trị được phân tách bằng dấu phẩy ,.


Trong JSON:


  • Tên thuộc tính hoặc key luôn là chuỗi, trong khi giá trị có thể là string, number, true hoặc false, null hoặc thậm chí là một đối tượng hoặc một mảng.
  • Các chuỗi phải được đặt trong dấu ngoặc kép " " và có thể chứa các ký tự đặc biệt (được thông dịch) như \n, \t\.


Một đối tượng JSON có thể trông giống như sau:



{
    "book": {
        "name": "101 con đường tỷ đô",
        "author": "Nguyễn Văn Giàu",
        "year": 2020,
        "genre": "Xạo ke",
        "bestseller": false
    }
}
 


Trong khi một ví dụ về mảng JSON sẽ trông giống như sau:



{
    "colors": [
        "Xanh",
        "Đỏ",
        "Tím",
        "Vàng"
    ]
}
 


> Ghi chú: Data-interchange format là một định dạng văn bản được sử dụng để trao đổi hoặc trao đổi dữ liệu giữa các nền tảng và hệ điều hành khác nhau. JSON là định dạng trao đổi dữ liệu nhẹ và phổ biến nhất cho các ứng dụng web.


2. PHÂN TÍCH CÚ PHÁP JSON TRONG JAVASCRIPT



Trong JavaScript, bạn có thể dễ dàng phân tích cú pháp dữ liệu JSON nhận được từ máy chủ web bằng phương thức JSON.parse().


> Có thể bạn sẽ tích: HỌC JAVASCRIPT CƠ BẢN


Phương thức này phân tích cú pháp một chuỗi JSON và xây dựng giá trị JavaScript hoặc đối tượng được mô tả bởi chuỗi đó.


Nếu chuỗi đã cho không phải là JSON hợp lệ, bạn sẽ gặp lỗi cú pháp.


Giả sử chúng ta đã nhận được chuỗi được mã hóa JSON sau từ máy chủ web:




{
    "name""NIIT - ICT HÀ NỘI",
    "age"18,
    "country""Việt Nam"
}
 


Bây giờ, chúng ta có thể chỉ cần sử dụng phương thức JavaScript JSON.parse() để chuyển đổi chuỗi JSON này thành một đối tượng JavaScript và truy cập các giá trị riêng lẻ bằng cách sử dụng toán tử dot (.)


Như sau:




// Lưu chuỗi JSON như vào biến JS
var json = '{"name": "NIIT - ICT HÀ NỘI","age": 18,"country": "Việt Nam"}';

// Chuyển đổi chuỗi JSON thành đối tượng trong JS
var obj = JSON.parse(json);

// Truy cập phần tử riêng lẻ như đối tượng trong JS
console.log(obj.name); // Kết quả: NIIT - ICT Hà Nội
console.log(obj.age); // Kết quả: 18
console.log(obj.country); // Kết quả: Việt Nam
 


Trong JAVA và PHP sẽ có những phương thức và đối tượng tương ứng để hỗ trợ xử lý JSON.


3. PHÂN TÍCH CÚ PHÁP JSON LỒNG NHAU TRONG JAVASCRIPT



Các đối tượng và mảng JSON cũng có thể được lồng vào nhau. Một đối tượng JSON có thể tùy ý chứa các đối tượng JSON khác, mảng, mảng lồng nhau, mảng đối tượng JSON, v.v.


Để xử lý JSON lồng nhau như vậy sẽ phức tạp hơn một chút.


Ví dụ sau sẽ chỉ cho bạn cách phân tích cú pháp một đối tượng JSON lồng nhau và trích xuất tất cả các giá trị bằng JavaScript.




/* Lưu JSON trong biến JS với ES6 template literals */
var json = `{
    "book": {
        "name": "101 con đường tỷ đô",
        "author": "Nguyễn Văn Giàu",
        "year": 2020,
        "coAuthors": ["Phạm Tỷ", "Quyết Đô", "Linh Tinh"],
        "genre": "Xạo ke",
        "price": {
            "paperback": "69000", "hardcover": "99000", "pdf": "25000"
        }
    }
}`;

// Chuyển từ đối tượng JSON thành đối tượng JS
var obj = JSON.parse(json);
 


Vì đối tượng nhận được chứa mảng và đối tượng con nên ta kiểm tra, nếu kiểu của nó là Object thì lặp hồi quy.



// Tạo hàm hồi quy để in giá trị lồng bên trong 
function printValues(obj) {
    for (var k in obj) {
        if (obj[kinstanceof Object) {
            printValues(obj[k]);
        } else {
            console.log(obj[k]);
        };
    }
};

// In ra tất cả các giá trị
printValues(obj);
 


Kết quả nhận được là:



101 con đường tỷ đô
Nguyễn Văn Giàu
2020
Phạm Tỷ
Quyết Đô
Linh Tinh
Xạo ke
69000
99000
25000
 


Còn nếu bạn biết rõ cấu trúc của chuỗi JSON thì bạn có thể truy cập từng giá trị như sau:



// In ra từng giá trị
console.log(obj["book"]["author"]); // Kết quả: Nguyễn Văn Giàu
console.log(obj["book"]["coAuthors"][0]); // Kết quả: Phạm Tỷ
console.log(obj["book"]["price"]["hardcover"]); // Kết quả: 99000
 


4. MÃ HÓA DỮ LIỆU DƯỚI DẠNG JSON VỚI JS



Đôi khi đối tượng hoặc giá trị JavaScript từ mã của bạn cần được chuyển đến máy chủ qua Ajax.


JavaScript cung cấp phương thức JSON.stringify() để để chuyển đổi giá trị JavaScript thành một chuỗi JSON, như được hiển thị bên dưới:



Xâu chuỗi một đối tượng JS



Ví dụ sau sẽ chỉ cho bạn cách chuyển đổi một đối tượng JavaScript thành chuỗi JSON:



// Đối tượng trong JS
var obj = {
    "name": "NIIT - ICT Hà Nội",
    "age": 18,
    "country": "Việt Nam"
};

// Chuyển đối tượng JS thành JSON
var json = JSON.stringify(obj);
console.log(json);
 


Kết quả ta nhận được một chuỗi JSON đúng định dạng chuẩn:



{"name":"NIIT - ICT Hà Nội","age":18,"country":"Việt Nam"}
 



Mặc dù, các đối tượng JavaScript và chuỗi JSON trông khá giống nhau, nhưng chúng không hoàn toàn giống nhau.


> Lưu ý: Trong JavaScript, tên thuộc tính của đối tượng có thể được đặt trong dấu nháy đơn (' ') hoặc dấu nháy kép (" "), hoặc bạn có thể bỏ qua hoàn toàn các dấu nháy. Tuy nhiên, trong JSON, tất cả các tên thuộc tính phải được đặt trong dấu nháy kép " ".



Xâu chuỗi một mảng JavaScript



Tương tự, bạn có thể chuyển đổi các mảng JavaScript thành chuỗi JSON, như sau:



// Một mảng trong JS
var arr = ["Xanh""Đỏ""Tím""Vàng""Hồng"];

// Chuyển đổi mảng JS thành JSON
var json = JSON.stringify(arr);
console.log(json);
 


Kết quả ta nhận được:



["Xanh","Đỏ","Tím","Vàng","Hồng"]
 


> CẢNH BÁO: Không sử dụng hàm eval() để đánh giá dữ liệu JSON vì thông qua đó hacker có thể chèn mã JavaScript độc hại vào trang web / ứng dụng của bạn.


Như vậy, qua bài này mình đã giúp bạn biết các mã hóa / giải mã JSON trong JavaScript.


> Nếu bạn đang tích cực học để lập trình web thì tham khảo ngay KHÓA HỌC LẬP TRÌNH WEB (Full Stack) với lộ trình bài bản, hướng dẫn bởi giảng viên doanh nghiệp trong 12 tháng.


> Hoặc tham khảo KHÓA HỌC JAVA hoặc KHÓA HỌC PHP nếu bạn thích học nhanh hơn, rút gọn hơn.



---
HỌC VIỆN ĐÀO TẠO CNTT NIIT - ICT HÀ NỘI
Học Lập trình chất lượng cao (Since 2002). Học làm Lập trình viên. Hành động ngay!
Đc: Tầng 3, 25T2, N05, Nguyễn Thị Thập, Cầu Giấy, Hà Nội
SĐT: 02435574074 - 0914939543
Email: hello@niithanoi.edu.vn
Fanpage: https://facebook.com/NIIT.ICT/
 
#niit #niithanoi #niiticthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp #java #php #python
Bình luận Facebook
Khóa học liên quan đến bài viết

Khóa học PHP Full stack [2023] cho người mới bắt đầu

96 giờ
Khóa học Lập trình PHP Full stack, phiên bản cập nhật lần thứ 8. Dạy Lập trình PHP bài bản từ Front end đến Back end + Laravel. Hướng dẫn làm 2 Dự Án Web lớn

KHÓA HỌC PYTHON HƯỚNG ĐỐI TƯỢNG

50 giờ
Khóa học giúp học viên sử dụng thành thạo ngôn ngữ Lập trình Python (3x). Hiểu và phát triển được Ứng dụng Web với Django Framework. Học thực hành với Giảng viên cao cấp.

Lập trình PHP với Laravel Framework

42 giờ
Khóa học Lập trình PHP với Laravel Framework được NIIT - ICT HÀ NỘI xây dựng nhằm hoàn thiện kỹ năng lập trình web các các bạn đã biết Lập trình Web PHP thuần.

Khóa học Java Full stack (IJFD)

104 giờ
Học lập trình Java Fullstack với khóa học được xây dựng theo lộ trình bài bản, từ JAVA CƠ BẢN đến JAVA WEB và nâng cao về JAVA FRAMEWORK như: Spring Boot, Hibernate
Mục lục
Đăng ký tư vấn
Nhân viên gọi điện tư vấn miễn phí sau khi đăng ký
Được cập nhật các ưu đãi sớm nhất
Hotline: 0383180086
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Hãy đăng ký để nhận những thông tin mới nhất về học bổng mới nhất tại NIIT - ICT Hà Nội
top
Đóng lại Đăng ký học tại NIIT - ICT Hà Nội
6260+ học viên đã theo học tại NIIT - ICT Hà Nội và có việc làm tốt trong ngành lập trình. Nắm lấy cơ hội ngay hôm nay!
Chọn khóa học
  • KHÓA HỌC LẬP TRÌNH FRONT END VỚI REACT.JS
  • KHÓA HỌC LẬP TRÌNH PHP WEB
  • Khóa học PHP Full stack [2023] cho người mới bắt đầu
  • Khóa học BIG DATA với Hadoop và Spark
  • Khóa học Lập trình Android tại Hà Nội
  • [Tuyển sinh 2023] Lập trình viên Quốc tế DigiNxt
  • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại Hà Nội
  • LẬP TRÌNH GAME
    • Khóa học Lập trình Game Unity
  • LẬP TRÌNH WEB FRONT END
    • KHÓA HỌC PYTHON HƯỚNG ĐỐI TƯỢNG
    • KHÓA HỌC ANGULAR & TYPESCRIPT (FRONT END)
  • LẬP TRÌNH WEB BACK END
    • LẬP TRÌNH JAVA WEB VỚI FRAME WORK
    • Lập trình Web với Django
    • Lập trình PHP với Laravel Framework
  • CHƯƠNG TRÌNH ĐÀO TẠO ỨNG DỤNG CÔNG NGHỆ
    • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại TP HCM
  • LẬP TRÌNH WEB FULL STACK
    • Khóa học Java Full stack (IJFD)
  • LẬP TRÌNH MOBILE
    • FRONT-END VỚI REACTJS VÀ REACT NATIVE
    • Lập trình Android Nâng cao
  • ĐÀO TẠO CHO DOANH NGHIỆP
    • KHÓA HỌC BUSINESS ANALYSIC TỪ CƠ BẢN ĐẾN NÂNG CAO 2023
    • Khóa học Magento: Làm chủ CMS TMĐT lớn nhất
    • Khóa học IOT: Xây dựng Sản phẩm IOT với Raspberry Pi
    • Khóa học Automation Testing Chuyên nghiệp
  • KHÓA HỌC DỰ ÁN
    • Học sử dụng bộ Office: Word, Excel, Power Point, Mail chuyên nghiệp
  • KHÓA HỌC KHÁC
    • VBA Excel Toàn Tập (Cơ Bản - Nâng Cao)
    • VBA Excel Nâng cao
    • Khóa học JMeter: Performance Testing
    • Khóa học Tester đạt chuẩn Quốc tế ISTQB Foundation Level
    • Khoá Học Tester đạt chuẩn quốc tế ISTQB Advanced Level
Bạn chưa chọn khóa học cần đăng ký
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Đăng ký học thành công!
Cảm ơn bạn đã đăng ký học tại NIIT - ICT HÀ NỘI!