Hướng dẫn how do you parse an object in javascript? - làm thế nào để bạn phân tích cú pháp một đối tượng trong javascript?


Việc sử dụng JSON phổ biến là trao đổi dữ liệu thành/từ máy chủ web.

Khi nhận dữ liệu từ một máy chủ web, dữ liệu luôn là một chuỗi.

Phân tích dữ liệu với JSON.parse() và dữ liệu trở thành đối tượng JavaScript.


Ví dụ - Phân tích cú pháp JSON

Hãy tưởng tượng chúng tôi đã nhận được văn bản này từ một máy chủ web:

'{"Tên": "John", "Tuổi": 30, "Thành phố": "New York"}'

Sử dụng chức năng JavaScript JSON.parse() để chuyển đổi văn bản thành đối tượng JavaScript:

const obj = json.parse ('{"name": "john", "tuổi": 30, "thành phố": "new york"}');

Hãy chắc chắn rằng văn bản ở định dạng JSON, nếu không bạn sẽ gặp lỗi cú pháp.

Sử dụng đối tượng JavaScript trong trang của bạn:

Thí dụ

document.getEuityById ("demo"). Internhtml = obj.Name;
document.getElementById("demo").innerHTML = obj.name;

Hãy tự mình thử »


Mảng là json

Khi sử dụng JSON.parse() trên JSON có nguồn gốc từ một mảng, phương thức sẽ trả về một mảng JavaScript, thay vì đối tượng JavaScript.

Thí dụ

const text = '["Ford", "BMW", "Audi", "Fiat"]';
const myArr = JSON.parse(text);

Hãy tự mình thử »



Mảng là json

Khi sử dụng JSON.parse() trên JSON có nguồn gốc từ một mảng, phương thức sẽ trả về một mảng JavaScript, thay vì đối tượng JavaScript.

const text = '["ford", "bmw", "audi", "fiat"]'; const myarr = json.parse (văn bản);

Ngoại lệ

Ngày phân tích cú pháp

Thí dụ

Convert a string into a date:

document.getEuityById ("demo"). Internhtml = obj.Name;
const obj = JSON.parse(text);
obj.birth = new Date(obj.birth);

Hãy tự mình thử »

Hãy tự mình thử »

Mảng là json

Khi sử dụng JSON.parse() trên JSON có nguồn gốc từ một mảng, phương thức sẽ trả về một mảng JavaScript, thay vì đối tượng JavaScript.

Thí dụ

Convert a string into a date, using the reviver function:

document.getEuityById ("demo"). Internhtml = obj.Name;
const obj = JSON.parse(text, function (key, value) {
  if (key == "birth") {
    return new Date(value);
  } else {
    return value;
  }
});

Hãy tự mình thử »

Hãy tự mình thử »

Mảng là json

Khi sử dụng JSON.parse() trên JSON có nguồn gốc từ một mảng, phương thức sẽ trả về một mảng JavaScript, thay vì đối tượng JavaScript.

const text = '["ford", "bmw", "audi", "fiat"]'; const myarr = json.parse (văn bản);

Ngoại lệ

Thí dụ

Convert a string into a function:

document.getEuityById ("demo"). Internhtml = obj.Name;
const obj = JSON.parse(text);
obj.age = eval("(" + obj.age + ")");

Hãy tự mình thử »

Hãy tự mình thử »

Mảng là json



Phương thức JSON.parse() phân tích chuỗi JSON, xây dựng giá trị JavaScript hoặc đối tượng được mô tả bởi chuỗi. Một hàm reviver tùy chọn có thể được cung cấp để thực hiện chuyển đổi trên đối tượng kết quả trước khi nó được trả về.JSON.parse() method parses a JSON string, constructing the JavaScript value or object described by the string. An optional reviver function can be provided to perform a transformation on the resulting object before it is returned.

Thử nó

Cú pháp

JSON.parse(text)
JSON.parse(text, reviver)

Thông số

JSON.parse("{}"); // {}
JSON.parse("true"); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse("null"); // null
2

Chuỗi để phân tích thành json. Xem đối tượng

JSON.parse("{}"); // {}
JSON.parse("true"); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse("null"); // null
3 để biết mô tả về cú pháp JSON.

JSON.parse("{}"); // {}
JSON.parse("true"); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse("null"); // null
4 Tùy chọnOptional

Nếu một hàm, điều này quy định cách mỗi giá trị được tạo ra ban đầu bằng cách phân tích cú pháp được chuyển đổi trước khi được trả lại. Các giá trị không thể gọi được bị bỏ qua. Hàm được gọi với các đối số sau:

JSON.parse("{}"); // {}
JSON.parse("true"); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse("null"); // null
5

Khóa liên quan đến giá trị.

JSON.parse("{}"); // {}
JSON.parse("true"); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse("null"); // null
6

Giá trị được tạo ra bởi phân tích cú pháp.

Giá trị trả về

Giá trị

JSON.parse("{}"); // {}
JSON.parse("true"); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse("null"); // null
7,
JSON.parse("{}"); // {}
JSON.parse("true"); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse("null"); // null
8, chuỗi, số, boolean hoặc
JSON.parse("{}"); // {}
JSON.parse("true"); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse("null"); // null
9 tương ứng với JSON
JSON.parse("{}"); // {}
JSON.parse("true"); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse("null"); // null
2 đã cho.

Ngoại lệ

JSON.parse(
  '{"p": 5}',
  (key, value) =>
    typeof value === "number"
      ? value * 2 // return value * 2 for numbers
      : value, // return everything else unchanged
);
// { p: 10 }

JSON.parse('{"1": 1, "2": 2, "3": {"4": 4, "5": {"6": 6}}}', (key, value) => {
  console.log(key);
  return value;
});
// 1
// 2
// 4
// 6
// 5
// 3
// ""
1

Ném nếu chuỗi vào Parse không hợp lệ JSON.

Sự mô tả

JSON.parse() phân tích chuỗi JSON theo ngữ pháp JSON, sau đó đánh giá chuỗi như thể đó là biểu thức JavaScript. Ví dụ duy nhất trong đó một đoạn văn bản JSON đại diện cho một giá trị khác với cùng một biểu thức JavaScript là khi xử lý khóa

JSON.parse(
  '{"p": 5}',
  (key, value) =>
    typeof value === "number"
      ? value * 2 // return value * 2 for numbers
      : value, // return everything else unchanged
);
// { p: 10 }

JSON.parse('{"1": 1, "2": 2, "3": {"4": 4, "5": {"6": 6}}}', (key, value) => {
  console.log(key);
  return value;
});
// 1
// 2
// 4
// 6
// 5
// 3
// ""
3 - xem Syntax theo nghĩa đen so với JSON.

Tham số reviver

Nếu một

JSON.parse("{}"); // {}
JSON.parse("true"); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse("null"); // null
4 được chỉ định, giá trị được tính toán bằng cách phân tích cú pháp được chuyển đổi trước khi được trả về. Cụ thể, giá trị được tính toán và tất cả các thuộc tính của nó (theo kiểu chiều sâu đầu tiên, bắt đầu với các thuộc tính được lồng nhất và tiến hành đến giá trị ban đầu) được chạy riêng lẻ qua
JSON.parse("{}"); // {}
JSON.parse("true"); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse("null"); // null
4.

JSON.parse("{}"); // {}
JSON.parse("true"); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse("null"); // null
4 được gọi với đối tượng chứa thuộc tính được xử lý là
JSON.parse(
  '{"p": 5}',
  (key, value) =>
    typeof value === "number"
      ? value * 2 // return value * 2 for numbers
      : value, // return everything else unchanged
);
// { p: 10 }

JSON.parse('{"1": 1, "2": 2, "3": {"4": 4, "5": {"6": 6}}}', (key, value) => {
  console.log(key);
  return value;
});
// 1
// 2
// 4
// 6
// 5
// 3
// ""
7 và hai đối số:
JSON.parse("{}"); // {}
JSON.parse("true"); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse("null"); // null
5 và
JSON.parse("{}"); // {}
JSON.parse("true"); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse("null"); // null
6, đại diện cho tên thuộc tính dưới dạng chuỗi (thậm chí đối với mảng) và giá trị thuộc tính. Nếu hàm
JSON.parse("{}"); // {}
JSON.parse("true"); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse("null"); // null
4 trả về
// Maps are normally serialized as objects with no properties.
// We can use the replacer to specify the entries to be serialized.
const map = new Map([
  [1, "one"],
  [2, "two"],
  [3, "three"],
]);

const jsonText = JSON.stringify(
  map,
  (key, value) => (value instanceof Map ? Array.from(value.entries()) : value),
);

console.log(jsonText);
// [[1,"one"],[2,"two"],[3,"three"]]

const map2 = JSON.parse(
  jsonText,
  (key, value) => (key === "" ? new Map(value) : value),
);

console.log(map2);
// Map { 1 => "one", 2 => "two", 3 => "three" }
1 (hoặc trả về không có giá trị - ví dụ: nếu thực thi rơi ra khỏi cuối hàm), thuộc tính sẽ bị xóa khỏi đối tượng. Mặt khác, thuộc tính được xác định lại là giá trị trả về. Nếu
JSON.parse("{}"); // {}
JSON.parse("true"); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse("null"); // null
4 chỉ biến đổi một số giá trị chứ không phải các giá trị khác, hãy chắc chắn trả về tất cả các giá trị không được cung cấp-nếu không, chúng sẽ bị xóa khỏi đối tượng kết quả.

Tương tự như tham số

// Maps are normally serialized as objects with no properties.
// We can use the replacer to specify the entries to be serialized.
const map = new Map([
  [1, "one"],
  [2, "two"],
  [3, "three"],
]);

const jsonText = JSON.stringify(
  map,
  (key, value) => (value instanceof Map ? Array.from(value.entries()) : value),
);

console.log(jsonText);
// [[1,"one"],[2,"two"],[3,"three"]]

const map2 = JSON.parse(
  jsonText,
  (key, value) => (key === "" ? new Map(value) : value),
);

console.log(map2);
// Map { 1 => "one", 2 => "two", 3 => "three" }
3 của
// Maps are normally serialized as objects with no properties.
// We can use the replacer to specify the entries to be serialized.
const map = new Map([
  [1, "one"],
  [2, "two"],
  [3, "three"],
]);

const jsonText = JSON.stringify(
  map,
  (key, value) => (value instanceof Map ? Array.from(value.entries()) : value),
);

console.log(jsonText);
// [[1,"one"],[2,"two"],[3,"three"]]

const map2 = JSON.parse(
  jsonText,
  (key, value) => (key === "" ? new Map(value) : value),
);

console.log(map2);
// Map { 1 => "one", 2 => "two", 3 => "three" }
4,
JSON.parse("{}"); // {}
JSON.parse("true"); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse("null"); // null
4 sẽ được gọi lần cuối trên đối tượng gốc với một chuỗi trống là
JSON.parse("{}"); // {}
JSON.parse("true"); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse("null"); // null
5 và đối tượng gốc là
JSON.parse("{}"); // {}
JSON.parse("true"); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse("null"); // null
6. Đối với phân tích cú pháp văn bản JSON cho các giá trị nguyên thủy,
JSON.parse("{}"); // {}
JSON.parse("true"); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse("null"); // null
4 sẽ được gọi một lần.

Lưu ý rằng

JSON.parse("{}"); // {}
JSON.parse("true"); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse("null"); // null
4 được chạy sau khi giá trị được phân tích cú pháp. Vì vậy, ví dụ, các số trong văn bản JSON sẽ được chuyển đổi thành số JavaScript và có thể mất độ chính xác trong quá trình. Để chuyển số lượng lớn mà không mất độ chính xác, tuần tự hóa chúng thành chuỗi và hồi sinh chúng thành Bigint, hoặc các định dạng chính xác tùy ý thích hợp khác.

Ví dụ

Sử dụng json.parse ()

JSON.parse("{}"); // {}
JSON.parse("true"); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse("null"); // null

Sử dụng tham số Reviver

JSON.parse(
  '{"p": 5}',
  (key, value) =>
    typeof value === "number"
      ? value * 2 // return value * 2 for numbers
      : value, // return everything else unchanged
);
// { p: 10 }

JSON.parse('{"1": 1, "2": 2, "3": {"4": 4, "5": {"6": 6}}}', (key, value) => {
  console.log(key);
  return value;
});
// 1
// 2
// 4
// 6
// 5
// 3
// ""

Sử dụng Reviver khi được ghép nối với người thay thế JSON.Stringify ()

Để một giá trị để chuyến đi khứ hồi đúng (nghĩa là nó bị phân rã thành cùng một đối tượng ban đầu), quá trình tuần tự hóa phải lưu giữ thông tin loại. Ví dụ: bạn có thể sử dụng tham số

// Maps are normally serialized as objects with no properties.
// We can use the replacer to specify the entries to be serialized.
const map = new Map([
  [1, "one"],
  [2, "two"],
  [3, "three"],
]);

const jsonText = JSON.stringify(
  map,
  (key, value) => (value instanceof Map ? Array.from(value.entries()) : value),
);

console.log(jsonText);
// [[1,"one"],[2,"two"],[3,"three"]]

const map2 = JSON.parse(
  jsonText,
  (key, value) => (key === "" ? new Map(value) : value),
);

console.log(map2);
// Map { 1 => "one", 2 => "two", 3 => "three" }
3 của
// Maps are normally serialized as objects with no properties.
// We can use the replacer to specify the entries to be serialized.
const map = new Map([
  [1, "one"],
  [2, "two"],
  [3, "three"],
]);

const jsonText = JSON.stringify(
  map,
  (key, value) => (value instanceof Map ? Array.from(value.entries()) : value),
);

console.log(jsonText);
// [[1,"one"],[2,"two"],[3,"three"]]

const map2 = JSON.parse(
  jsonText,
  (key, value) => (key === "" ? new Map(value) : value),
);

console.log(map2);
// Map { 1 => "one", 2 => "two", 3 => "three" }
4 cho mục đích này:

// Maps are normally serialized as objects with no properties.
// We can use the replacer to specify the entries to be serialized.
const map = new Map([
  [1, "one"],
  [2, "two"],
  [3, "three"],
]);

const jsonText = JSON.stringify(
  map,
  (key, value) => (value instanceof Map ? Array.from(value.entries()) : value),
);

console.log(jsonText);
// [[1,"one"],[2,"two"],[3,"three"]]

const map2 = JSON.parse(
  jsonText,
  (key, value) => (key === "" ? new Map(value) : value),
);

console.log(map2);
// Map { 1 => "one", 2 => "two", 3 => "three" }

Bởi vì JSON không có không gian cú pháp để chú thích siêu dữ liệu loại, để hồi sinh các giá trị không phải là đối tượng đơn giản, bạn phải xem xét một trong những điều sau đây:

  • Tuần tự hóa toàn bộ đối tượng thành một chuỗi và tiền tố nó bằng một thẻ loại.
  • "Đoán" dựa trên cấu trúc của dữ liệu (ví dụ: một mảng gồm các mảng hai thành viên)
  • Nếu hình dạng của tải trọng được cố định, dựa trên tên thuộc tính (ví dụ, tất cả các thuộc tính được gọi là
    // both will throw a SyntaxError
    JSON.parse("[1, 2, 3, 4, ]");
    JSON.parse('{"foo" : 1, }');
    
    2 giữ các đối tượng
    // both will throw a SyntaxError
    JSON.parse("[1, 2, 3, 4, ]");
    JSON.parse('{"foo" : 1, }');
    
    3).

Json.parse () không cho phép dấu phẩy kéo dài

// both will throw a SyntaxError
JSON.parse("[1, 2, 3, 4, ]");
JSON.parse('{"foo" : 1, }');

Json.parse () không cho phép trích dẫn đơn lẻ

// will throw a SyntaxError
JSON.parse("{'foo': 1}");

Thông số kỹ thuật

Sự chỉ rõ
Đặc tả ngôn ngữ Ecmascript # Sec-Json.Parse
# sec-json.parse

Tính tương thích của trình duyệt web

Bảng BCD chỉ tải trong trình duyệt

Xem thêm

Đối tượng phân tích cú pháp là gì?

Sự vật.Tạo một mô hình mới với các thuộc tính được xác định.Bạn thường không gọi phương thức này trực tiếp.Bạn nên sử dụng một lớp phân tích phân tích.Creates a new model with defined attributes. You won't normally call this method directly. It is recommended that you use a subclass of Parse.

Parse trong JavaScript là gì?

Phân tích phân tích có nghĩa là phân tích và chuyển đổi một chương trình thành một định dạng nội bộ mà môi trường thời gian chạy thực sự có thể chạy, ví dụ như công cụ JavaScript bên trong các trình duyệt.Trình duyệt phân tích cú pháp HTML vào cây dom.analyzing and converting a program into an internal format that a runtime environment can actually run, for example the JavaScript engine inside browsers. The browser parses HTML into a DOM tree.

Làm thế nào để bạn phân tích và xâu chuỗi một đối tượng?

Chuỗi một đối tượng JavaScript Sử dụng hàm JavaScript json.Stringify () để chuyển đổi nó thành một chuỗi.const myjson = json.Stringify (obj);Kết quả sẽ là một chuỗi theo ký hiệu JSON.Use the JavaScript function JSON.stringify() to convert it into a string. const myJSON = JSON.stringify(obj); The result will be a string following the JSON notation.

Tại sao JSON Parse được sử dụng trong JavaScript?

Phương thức json.parse () phân tích chuỗi JSON, xây dựng giá trị javascript hoặc đối tượng được mô tả bởi chuỗi.Một hàm reviver tùy chọn có thể được cung cấp để thực hiện chuyển đổi trên đối tượng kết quả trước khi nó được trả về.parses a JSON string, constructing the JavaScript value or object described by the string. An optional reviver function can be provided to perform a transformation on the resulting object before it is returned.