JSON означает нотацию объектов JavaScript. JSON — это текстовый формат, представляющий структурированные данные, что делает его популярным выбором для обмена данными между различными системами, особенно в веб-разработке.

Это позволяет нам общаться между сервером и клиентом. Он используется для хранения и обмена данными.

Он действует как альтернатива XML и основан на литералах объектов JavaScript.

Преимущества:

  1. Легко читается — разработчикам легко писать и понимать.
  2. Легкий вес — минимальный синтаксис и простота, что делает его эффективным для передачи данных по сетям.
  3. Независимый от языка — может использоваться на любом языке программирования для генерации данных JSON, что делает его пригодным для межплатформенного обмена данными.

Типы данных:

JSON предоставляет несколько основных типов данных для представления значений.

  1. Строка: последовательность символов, заключенная в двойные кавычки.
  2. Число: JSON поддерживает как целые числа, так и числа с плавающей запятой.
  3. Boolean: представляет истинное или ложное значение.
  4. Массив: упорядоченный список значений, заключенный в квадратные скобки []. Элементы массива могут иметь любой поддерживаемый тип данных, включая другие массивы или объекты.
  5. Объект: неупорядоченная коллекция пар ключ-значение, заключенная в фигурные скобки {}. Ключи должны представлять собой строки, заключенные в двойные кавычки, а значения могут иметь любой поддерживаемый тип данных, включая другие объекты или массивы.
  6. Null: представляет собой пустое или несуществующее значение.

Например,

{
    "name":"Alice",
    "age":25,
    "isStudent":true,
    "favColours":["red","blue","black"],
    "address": {
        "street":"123 Main St",
        "city":"cityname",
        "zipcode":null
    }
}

Синтаксис:

Синтаксис JSON состоит из набора правил:

  1. Написано внутри фигурных скобок
  2. Данные организованы в пары ключ-значение.
  3. Имена ключей должны быть заключены в двойные кавычки.
  4. Значения могут относиться к любым поддерживаемым типам данных.
  5. Квадратные скобки для хранения массива и фигурные скобки для хранения объектов.
{
  "name": "John",
  "age": 30,
  "isStudent": false
}

JSON против XML

JSON — альтернатива XML. И JSON, и XML используются для хранения и обмена данными. XML — это язык разметки, используемый для структурирования данных и часто используемый в конфигурациях, документах и ​​обмене данными.

Давайте посмотрим разницу между JSON и XML.

  1. JSON — это текстовый формат, а XML — это язык разметки.
  2. JSON легче, а XML тяжелее из-за сложного синтаксиса.
  3. JSON поддерживает несколько основных типов данных, таких как строка, число, логическое значение, массив, объект и значение null, тогда как XML поддерживает только строковый тип данных.

4. Здесь получить данные легко, а в XML — сложно.

<person>
  <name>Alice</name>
  <age>25</age>
  <isStudent>true</isStudent>
  <address>
    <street>123 Main St</street>
    <city>Anytown</city>
  </address>
</person>

В этом примере XML:

Такие теги, как «человек», «имя», «возраст» и «isStudent», представляют элементы. Каждый элемент имеет открывающий и закрывающий тег.

XML более многословен с явными тегами, но менее эффективен для обмена данными из-за своей многословности.

Литерал объекта JavaScript

Мы уже узнали, что JSON основан на литерале объекта JavaScript. Он используется для определения объектов в вашем коде JavaScript и подходит для программного использования.

Синтаксис JSON очень похож на литерал объекта JavaScript. Но в литерале объекта ключи можно определять без кавычек.

const person = {
  name: "Alice",
  age: 25,
  isStudent: true,
  address: {
    street: "123 Main St",
    city: "Anytown"
  }
  displayName:function() {
    return this.name;
  }
};

В этом примере мы можем определить функцию в литерале объекта JavaScript. Но мы не можем напрямую определить функцию в JSON.

Выбор между JSON, JavaScript Object Literal и XML зависит от вашего варианта использования, потребностей в обмене данными и контекста, в котором вы работаете.

JSON и объектный литерал JavaScript часто отдаются предпочтение в современной веб-разработке из-за их простоты и совместимости с JavaScript, тогда как XML может быть более подходящим в контекстах, требующих сложных структур документов или старых систем.

синтаксический анализ() и строковая обработка()

JavaScript предоставляет встроенные функции для преобразования JSON в литерал объекта JavaScript и наоборот.

Метод JSON.parse() используется для преобразования данных JSON в литерал объекта JavaScript.

const jsonString = '{"name":"John","age":30}';
const person = JSON.parse(jsonString);
// person is now { name: 'John', age: 30 }

Метод JSON.stringify() используется для объекта JavaScript, являющегося литералом данных JSON.

const person = {name: "John", age: 30};
const jsonString = JSON.stringify(person);
// jsonString is now '{"name":"John","age":30}'

Чтобы получить данные из объекта JSON:

Существует два разных способа доступа к данным из объекта JSON.

  1. Точечное обозначение
  2. Квадратное обозначение

Точка (.):

const person = {name: "Alice", age: 25,
  address: {
    city: "Anytown",
    state: "CA"
  }
};

console.log(person.name);            // Outputs: "Alice"
console.log(person.address.city);    // Outputs: "Anytown"

В этом примере мы используем точечную запись для доступа к свойству «имя» объекта «человек» и свойству «город» внутри вложенного объекта «адрес».

Квадратное обозначение([]):

Это позволяет нам получать доступ к данным, используя динамические имена свойств. Его можно использовать для решения проблем, связанных с точечной записью.

const person = {
    "1": "Alice",
    "last name": "Smith",
    "age": 25
  };

  console.log(person["1"]);  // Outputs: "Alice"
  console.log(person["last name"]);   // Outputs: "Smith"

  const propName = "age";
  console.log(person[propName]);              // Outputs: 25

Если ключ представлен числом или в ключе есть пробел, мы не можем получить доступ к этому ключу с помощью точечной записи. Чтобы решить эту проблему, мы можем использовать обозначение [].

Мы также можем использовать переменные для динамического указания имени свойства, как показано в примере propName.

Спасибо, что уделили время прочтению этой статьи.