Chuỗi JSON là một định dạng thuận tiện để truyền dữ liệu giữa các thiết bị đầu cuối. Hầu như tất cả các phản hồi API mà bạn thấy đều ở định dạng chuỗi JSON.
Chuỗi JSON phải được phân tích cú pháp để đọc dữ liệu đi kèm với chuỗi này.
Hàm JSON.parse được sử dụng để chuyển đổi chuỗi JSON thành đối tượng JavaScript.
Mục lục
ví dụ nhanh
Ví dụ nhanh dưới đây có một chuỗi JSON đầu vào có các thuộc tính của động vật. Các thuộc tính được lưu trữ trong một hệ thống phân cấp đa cấp.
Hàm JSON.parse() JS chuyển đổi đầu vào chuỗi JSON này thành một mảng đối tượng.
const jsonString = `{
"animals": {
"Lion": {
"name": "Lion",
"type": "Wild",
"Location": {
"1": {
"zoo-1": "San Diego Zoo",
"zoo-2": "Bronx Zoo"
}
}
}
}
}`;
javaScriptObject = JSON.parse(jsonString)
console.log(javaScriptObject);
Đoạn mã trên sẽ ghi đầu ra của JSON đã chuyển đổi vào bảng điều khiển dành cho nhà phát triển của trình duyệt.
Đầu ra:
animals:
Lion:
Location:
1:
zoo-1: "San Diego Zoo"
zoo-2: "Bronx Zoo"
name: "Lion"
type: "Wild"
Chuỗi JSON nguồn có thể từ nhiều tài nguyên khác nhau. Ví dụ,
- Nó có thể được lưu trữ trong cơ sở dữ liệu sẽ được phân tích cú pháp.
- Nó có thể là một phản hồi đối với một API.
Chuỗi JSON sẽ chứa nhiều loại dữ liệu như ngày tháng, hàm, v.v.
Các ví dụ sau cung cấp mã để tìm hiểu cách chuyển đổi chuỗi JSON chứa các loại dữ liệu khác nhau. Trong bài viết trước, chúng ta đã biết cách chuyển đổi một đối tượng JavaScript thành JSON.
Ngày trong chuỗi JSON sẽ được chuyển đổi như thế nào
Nếu chuỗi JSON đầu vào chứa các giá trị ngày tháng, thì hàm JSON.parse() JS sẽ trả về một chuỗi ngày tháng.
Ví dụ, ngày trong 2014-11-25
vào trong Tue Nov 25 2014 05:30:00 GMT+0530
.
Nó sẽ được chuyển đổi sau thành một đối tượng ngày JavaScript.
// JSON string with date to JavaScript object
const jsonString = '{"animal":"Lion", "birthdate":"2014-11-25", "zoo":"Bronx Zoo"}';
const jsObject = JSON.parse(jsonString);
jsObject.birthdate = new Date(jsObject.birthdate);
console.log(jsObject.birthdate);
Đầu ra:
Tue Nov 25 2014 05:30:00 GMT+0530
Tập lệnh đầu vào JSON có chức năng cho đối tượng JavaScript
Nếu một tập lệnh JSON chứa một hàm làm giá trị của nó, đoạn mã dưới đây cho biết cách phân tích cú pháp JSON đầu vào. Trong hướng dẫn trước, chúng ta đã thấy nhiều chức năng xử lý JSON bằng PHP.
Nó đã áp dụng JSON.parse như bình thường và lấy phạm vi của hàm bằng cách sử dụng JavaScript eval(). Chỉ mục đối tượng JavaScript có phạm vi truy cập hàm trong chuỗi JSON đầu vào.
Lưu ý: Sử dụng JS eval() là một ý tưởng tồi nếu bạn đang làm việc với dữ liệu nhạy cảm. Vì vậy, hãy tránh sử dụng các hàm dưới dạng chuỗi bên trong đầu vào JS JSON.
// JSON string with a function to JavaScript object and invoke the function
const jsonString = '{"animal":"Lion", "birthdate":"2014-11-25", "id":"function () {return 101;}"}';
const jsObject = JSON.parse(jsonString);
jsObject.id = eval("(" + jsObject.id + ")");
console.log(jsObject.id());
// also be aware that, when you pass functions in JSON it will lose the scope
Trình phục hồi JSON.parse để chuyển đổi chuỗi ngày thành đối tượng JavaScript
Trong ví dụ trước, chúng tôi đã phân tích cú pháp ngày dưới dạng chuỗi và sau đó chuyển đổi nó thành đối tượng Ngày.
Thay vì chuyển đổi chuỗi Ngày kết quả thành một đối tượng Ngày sau đó, chương trình này sử dụng JSON.parse() với tham số hồi sinh của nó.
Tham số hồi sinh là một hàm gọi lại được tạo bên dưới để chuyển đổi ngày đầu vào thành một đối tượng Ngày.
Sử dụng phương thức này, đối tượng Javascript đầu ra sẽ bao gồm đối tượng ngày như được chuyển đổi bởi phương thức hồi sinh.
// JSON string with a date to JavaScript object using the reviver parameter of JSON.parse
const jsonString = '{"animal": "Lion", "birthdate": "2014-11-25", "zoo": "Bronx Zoo"}';
const jsObject = JSON.parse(jsonString, function(key, value) {
if (key == "birthdate") {
return new Date(value);
} else {
return value;
}
});
jsObject.birthdate = new Date(jsObject.birthdate);
console.log(jsObject.birthdate);
Tham số hồi sinh là tùy chọn trong khi sử dụng hàm JSOM.parse. Cuộc gọi lại được xác định là trình hồi sinh sẽ kiểm tra từng mục của chuỗi JSON đầu vào.
Xem thêm tin mới và bổ ích tại:
– Kiến thức gia đình
– Tri thức đời sống
– Kênh youtube Kiến thức gia đình