Hướng dẫn what is parsing in javascript - phân tích cú pháp trong javascript là gì

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ố

text

Chuỗi để phân tích thành json. Xem đối tượng JSON để biết mô tả về cú pháp JSON.

reviver 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
0

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
1

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
2,
JSON.parse("{}"); // {}
JSON.parse("true"); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse("null"); // null
3, 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
4 tương ứng với JSON text đã cho.

Ngoại lệ

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

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. Trường hợp 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("{}"); // {}
JSON.parse("true"); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse("null"); // null
8 - & nbsp; xem đối tượng cú pháp theo nghĩa đen so với JSON.

Tham số reviver

Nếu một reviver đượ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 chính trị ban đầu) được chạy riêng lẻ qua reviver.

reviver đượ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); // log the current property name, the last is "".
  return value; // return the unchanged property value.
});

// 1
// 2
// 4
// 6
// 5
// 3
// ""
2 và hai đối số: ____10 và
JSON.parse("{}"); // {}
JSON.parse("true"); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse("null"); // null
1, đại diện cho tên thuộc tính dưới dạng chuỗi (ngay cả đối với mảng) và giá trị thuộc tính. Nếu hàm reviver trả về
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); // log the current property name, the last is "".
  return value; // return the unchanged property value.
});

// 1
// 2
// 4
// 6
// 5
// 3
// ""
6 (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 reviver 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ố

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); // log the current property name, the last is "".
  return value; // return the unchanged property value.
});

// 1
// 2
// 4
// 6
// 5
// 3
// ""
8 củ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); // log the current property name, the last is "".
  return value; // return the unchanged property value.
});

// 1
// 2
// 4
// 6
// 5
// 3
// ""
9, reviver 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
0 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
1. Đối với phân tích văn bản JSON cho các giá trị nguyên thủy, reviver sẽ được gọi một lần.

Lưu ý rằng reviver đượ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); // log the current property name, the last is "".
  return value; // return the unchanged property 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ố

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); // log the current property name, the last is "".
  return value; // return the unchanged property value.
});

// 1
// 2
// 4
// 6
// 5
// 3
// ""
8 củ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); // log the current property name, the last is "".
  return value; // return the unchanged property value.
});

// 1
// 2
// 4
// 6
// 5
// 3
// ""
9 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à
    // 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" }
    
    7 giữ các đối tượng
    // 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" }
    
    8).

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

Phân tích cú pháp trong lập trình là gì?

Trình phân tích cú pháp là một chương trình là một phần của trình biên dịch và phân tích cú pháp là một phần của quy trình biên dịch. Phân tích cú pháp xảy ra trong giai đoạn phân tích tổng hợp. Trong phân tích cú pháp, mã được lấy từ bộ tiền xử lý, chia thành các phần nhỏ hơn và được phân tích để phần mềm khác có thể hiểu nó.part of the compiling process. Parsing happens during the analysis stage of compilation. In parsing, code is taken from the preprocessor, broken into smaller pieces and analyzed so other software can understand it.

Ý bạn là gì để phân tích cú pháp?

Định nghĩa phân tích (mục 1/2 2) Động từ chuyển tiếp.1A: Để chia (một câu) thành các phần ngữ pháp và xác định các phần và mối quan hệ của chúng với nhau.B: Để mô tả (một từ) về mặt ngữ pháp bằng cách nêu một phần của lời nói và giải thích sự thay đổi (xem ý nghĩa thay đổi 2A) và các mối quan hệ cú pháp.to divide (a sentence) into grammatical parts and identify the parts and their relations to each other. b : to describe (a word) grammatically by stating the part of speech and explaining the inflection (see inflection sense 2a) and syntactical relationships.

Kịch bản phân tích cú pháp là gì?

Phân tích phân tích, phân tích cú pháp hoặc phân tích cú pháp là quá trình phân tích một chuỗi các ký hiệu, bằng ngôn ngữ tự nhiên, ngôn ngữ máy tính hoặc cấu trúc dữ liệu, phù hợp với các quy tắc của một ngữ pháp chính thức.Thuật ngữ phân tích cú pháp đến từ phân tích tiếng Latin (orationis), có nghĩa là phần (của lời nói).the process of analyzing a string of symbols, either in natural language, computer languages or data structures, conforming to the rules of a formal grammar. The term parsing comes from Latin pars (orationis), meaning part (of speech).

Có nghĩa là gì khi phân tích cú pháp trong JSON?

Phân tích cú pháp JSON là quá trình chuyển đổi một đối tượng JSON ở định dạng văn bản thành đối tượng JavaScript có thể được sử dụng bên trong một chương trình.Trong JavaScript, cách tiêu chuẩn để làm điều này là bằng cách sử dụng phương thức JSON.the process of converting a JSON object in text format to a Javascript object that can be used inside a program. In Javascript, the standard way to do this is by using the method JSON.