JSON: Test JSON


Đăng ký nhận thông báo về những video mới nhất

Câu 1: JSON là gì và tại sao tôi nên sử dụng nó?

Câu trả lời

JSON (JavaScript Object Notation) là một định dạng nhẹ được sử dụng để trao đổi dữ liệu. Nó dựa trên một tập hợp con của ngôn ngữ JavaScript (cách các đối tượng được xây dựng trong JavaScript). Một số JavaScript không phải là JSON và một số JSON không phải là JavaScript.

Câu 2: Loại nội dung JSON chính xác là gì?

Câu trả lời

Loại phương tiện MIME cho văn bản JSON là application/json. Mã hóa mặc định là UTF-8. (Nguồn: RFC 4627).

Câu 3: Đoạn code sau in ra nội dung gì? 

const a = {
  stringField: 'Joe' ,
  numberField: 123 ,
  dateField: new Date ( '1995-12-17T03: 24: 00' ),
  nestedField: {field: 'Nested' }
};

const b = JSON.parse (JSON.stringify (a));

console.log (
  a.stringField === b.stringField,
  a.numberField === b.numberField,
  a.dateField === b.dateField,
  a.nestedField.field === b.nestedField.field
);

A. true true true true true

B. true true true false

C . true true false true

D. false false false false false

Giải thích:

b = JSON.parse(JSON.stringify(a)) sẽ thực hiện deep copy trên object a. Tất cả các thuộc tính là các kiểu dữ liệu nguyên thủy (Boolean, String, Number) sẽ được copy một cách chính xác, tuy nhiên đối với các thuộc tính có giá trị không phải là giá trị JSON (Date, undefined, Function, và không phải kiểu dữ liệu nguyên thủy) sẽ không được copy đúng. Trong ví dụ trên, object Date sẽ được chuyển đổi sang string, chúng ta có thể xem thêm về JSON.stringify() để hiểu rõ hơn.

Câu 4: Làm cách nào để phân tích cú pháp chuỗi JSON trong JavaScript?

Câu trả lời

Cách chuẩn để phân tích cú pháp JSON trong JavaScript là dùng hàm JSON.parse().

API JSON được giới thiệu cùng với ES5 (2011) và kể từ đó đã được triển khai trên hơn 99% trình duyệt theo thị phần và Node.js. Cách sử dụng của nó rất đơn giản:

const json = '{"fruit": "pineapple", "fingers": 10}';
const obj = JSON.parse(json);
console.log(obj.fruit, obj.fingers);

Câu 5: Hãy giải thích cấu trúc của JSON?

Câu trả lời

JSON được xây dựng trên hai cấu trúc:

  • Tập hợp các cặp tên/giá trị. Trong các ngôn ngữ khác nhau, điều này được thực hiện như một đối tượng, bản ghi, cấu trúc, từ điển, bảng băm, danh sách có khóa hoặc mảng kết hợp.
  • Một danh sách các giá trị có thứ tự. Trong hầu hết các ngôn ngữ, điều này được thực hiện dưới dạng mảng, vectơ, danh sách hoặc chuỗi.

Câu 6: Các đối tượng Javascript và JSON có tương đương nhau không?

Câu trả lời

Mọi người thường cho rằng tất cả các đối tượng Javascript là JSON và JSON là một đối tượng Javascript. Điều này là không đúng.

Trong Javascript thì var x = {x: y} chẳng hạn nó không phải là JSON, đây là một đối tượng Javascript. Trong khi ởi JSON (được trình bày bằng ngôn ngữ Javascript) sẽ là  var x = '{"x": "y"}' . x  là một đối tượng kiểu chuỗi không phải là một đối tượng theo đúng nghĩa của nó. Để biến đối tượng này thành một đối tượng Javascript hoàn chỉnh, trước tiên bạn phải phân tích cú pháp nó,  var x = JSON.parse ('{"x": "y"}'); , x bây giờ là một đối tượng nhưng đây không phải là JSON nữa.

Hãy nhớ rằng: JSON (trong Javascript) là một chuỗi (string)!

Câu 7: Tôi có thể sử dụng nhận xét (comment) bên trong tệp JSON không? Nếu vậy, làm thế nào?

Câu trả lời

Không.

Tất cả JSON phải là dữ liệu và nếu bạn đưa vào một comment, thì nó cũng sẽ là dữ liệu.

Bạn có thể có một phần tử dữ liệu được chỉ định có tên "_comment" (hoặc một cái gì đó) sẽ bị các ứng dụng sử dụng dữ liệu JSON bỏ qua.

{
   "_comment": "comment đặt tại đây...",
   "glossary": {
      "title": "ví dụ",
      "GlossDiv": {
         "title": "S",
         "GlossList": {
            "GlossEntry": {
               "ID": "SGML",
               "SortAs": "SGML",
               "GlossTerm": "Standard Generalized Markup Language",
               "Acronym": "SGML",
               "Abbrev": "ISO 8879:1986",
               "GlossDef": {
                  "para": "Một ngôn ngữ meta-markup, dùng để tạo ngôn ngữ đánh dấu như DocBook.",
                  "GlossSeeAlso": ["GML", "XML"]
               },
               "GlossSee": "markup"
            }
         }
      }
   }
}

Câu 8: Giải thích sự khác biệt giữa JSON.stringify() và JSON.parse() ?

Câu trả lời

JSON.stringify() biến một đối tượng JavaScript thành văn bản JSON và lưu trữ văn bản JSON đó dưới dạng một chuỗi, ví dụ:

var my_object = {
    key1: "abcd",
    key2: true,
    key3: 5
};

var object_as_string = JSON.stringify(my_object);
// "{"key1":"abcd","key2":true,"key3":5}"  

typeof(object_as_string);
// "Kết quả là kiểu string"

Còn JSON.parse() thì biến một chuỗi văn bản JSON thành một đối tượng JavaScript, ví dụ:

var object_as_string_as_object = JSON.parse(object_as_string);
// {key1: "abcd", key2: true, key3: 5} 

typeof(object_as_string_as_object);
// "Kết quả là kiêu object"

Câu 9: Sự khác biệt giữa JSON và JSONP là gì?

Câu trả lời

JSONP là JSON có padding, nghĩa là bạn đặt một chuỗi ở đầu và một cặp dấu ngoặc đơn xung quanh nó. Ví dụ:

//JSON
{
    "name": "V1Study",
    "id": 5
}
//JSONP
func({
    "name": "V1Study",
    "id": 5
});

Kết quả là bạn có thể tải JSON dưới dạng tệp kịch bản. Nếu trước đó bạn đã thiết lập một hàm có tên func, thì hàm đó sẽ được gọi với một đối số, đó là dữ liệu JSON, khi tải xong tệp script. Điều này thường được sử dụng để cho phép AJAX trên nhiều trang web với dữ liệu JSON. Giả sử nếu bạn biết rằng v1study.com đang cung cấp các tệp JSON giống như ví dụ JSONP được đưa ra ở trên, thì bạn có thể sử dụng mã như thế này để truy xuất nó, ngay cả khi bạn không ở trên domain v1study.com:

function func(json) {
  alert(json.name);
}
var elm = document.createElement("script");
elm.setAttribute("type", "text/javascript");
elm.src = "https://v1study.com/jsonp";
document.body.appendChild(elm);

Câu 10: Tại sao phải sử dụng JSON trên XML?

Câu trả lời

  • Nó nhanh hơn và nhẹ hơn XML như trên định dạng dữ liệu dây
  • Dữ liệu XML không được đánh máy trong khi các đối tượng JSON được nhập
  • Các loại JSON: Số, Mảng, Boolean, Chuỗi
  • Dữ liệu XML đều là chuỗi
  • Dữ liệu có sẵn dưới dạng đối tượng JSON trong JavaScript của bạn
  • Tìm nạp giá trị đơn giản như đọc từ một thuộc tính đối tượng trong mã JavaScript của bạn

Câu 11: Những hạn chế và cách sử dụng của JSON là gì?

Câu trả lời

Có một số điều như sau:

  • JSON không thích hợp để xử lý dữ liệu rất lớn và phức tạp. Khi dữ liệu trở nên phức tạp với một số cấu trúc được lồng ghép và phân cấp, nó sẽ trở nên phức tạp đối với khả năng đọc của con người.
  • JSON không hỗ trợ các bình luận.
  • Nó không hỗ trợ xử lý các định dạng đa phương tiện như hình ảnh hoặc định dạng văn bản đa dạng thức.

Nếu bạn có điều thắc mắc, bạn hãy comment cho V1Study để được giải đáp.
Bài viết này được chia sẻ bởi LongDT. Nếu bạn muốn chia sẻ bài viết, bạn hãy Đăng ký làm thành viên!
« Prev
Copied !!!