Работа с JSON

Bliss.js предоставляет удобный и лаконичный API для работы с JSON-данными, позволяя эффективно управлять данными в формате JavaScript Object Notation, сериализовать и десериализовать объекты, а также выполнять сложные операции фильтрации и трансформации. Работа с JSON в Bliss.js строится вокруг нескольких ключевых функций и методов, обеспечивающих гибкость и читаемость кода.


Парсинг JSON

Для преобразования JSON-строки в JavaScript-объект используется функция Bliss.parseJSON. Она обеспечивает безопасный разбор строки и обработку ошибок:

const jsonString = '{"name": "Alice", "age": 30, "skills": ["JS", "HTML", "CSS"]}';
const user = Bliss.parseJSON(jsonString);

console.log(user.name); // Alice
console.log(user.skills[1]); // HTML

Особенности Bliss.parseJSON:

  • Возвращает null при некорректном JSON, вместо генерации исключения.
  • Позволяет использовать второй аргумент — функцию reviver, аналогичную стандартной JSON.parse, для трансформации значений:
const user = Bliss.parseJSON(jsonString, (key, value) => {
    if (key === 'age') return value + 1;
    return value;
});

console.log(user.age); // 31

Сериализация объектов

Bliss.js упрощает преобразование объектов в JSON с помощью метода Bliss.toJSON. Он поддерживает форматирование и фильтрацию:

const user = {
    name: "Alice",
    age: 30,
    password: "secret"
};

const safeJSON = Bliss.toJSON(user, ['name', 'age'], 2);
console.log(safeJSON);
/*
{
  "name": "Alice",
  "age": 30
}
*/

Ключевые параметры Bliss.toJSON:

  • Фильтр: массив ключей для включения в результат.
  • Отступы: позволяет задавать количество пробелов для форматирования строки.

Доступ к вложенным данным

Bliss.js предоставляет методы для удобного извлечения значений из сложных JSON-структур. Метод Bliss.get позволяет безопасно получать данные по пути:

const data = {
    user: {
        profile: {
            name: "Bob",
            contacts: {
                email: "bob@example.com"
            }
        }
    }
};

const email = Bliss.get(data, 'user.profile.contacts.email');
console.log(email); // bob@example.com

Если указанный путь отсутствует, возвращается undefined, что предотвращает ошибки доступа к свойствам null или undefined.


Модификация JSON

Изменение значений в сложных структурах также удобно через метод Bliss.set. Он автоматически создаёт промежуточные объекты при необходимости:

const data = {};
Bliss.set(data, 'user.profile.name', 'Charlie');
console.log(JSON.stringify(data, null, 2));
/*
{
  "user": {
    "profile": {
      "name": "Charlie"
    }
  }
}
*/

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


Фильтрация и трансформация

Bliss.js расширяет работу с JSON возможностью фильтровать и изменять данные с помощью Bliss.map и Bliss.filter. Они работают как с массивами, так и с объектами:

const users = [
    {name: "Alice", age: 30},
    {name: "Bob", age: 25},
    {name: "Charlie", age: 35}
];

const adults = Bliss.filter(users, u => u.age >= 30);
console.log(adults);
/*
[
  {name: "Alice", age: 30},
  {name: "Charlie", age: 35}
]
*/

const names = Bliss.map(users, u => u.name);
console.log(names); // ["Alice", "Bob", "Charlie"]

Эти методы позволяют выполнять сложные операции с JSON-данными, не прибегая к многократному циклу for или дополнительным проверкам.


Валидация JSON

Bliss.js включает функции проверки структуры JSON. Bliss.validate проверяет объект по шаблону:

const user = {name: "Alice", age: 30};
const schema = {name: 'string', age: 'number'};

const valid = Bliss.validate(user, schema);
console.log(valid); // true

Поддерживаются вложенные схемы и массивы:

const data = {
    users: [
        {name: "Alice", age: 30},
        {name: "Bob", age: 25}
    ]
};

const schema = {
    users: [{name: 'string', age: 'number'}]
};

console.log(Bliss.validate(data, schema)); // true

Асинхронная работа с JSON

Bliss.js предоставляет методы для загрузки JSON по сети с автоматическим разбором. Bliss.loadJSON упрощает получение данных через fetch:

Bliss.loadJSON('/api/users')
    .then(users => {
        console.log(users);
    })
    .catch(err => {
        console.error('Ошибка загрузки JSON:', err);
    });

Метод поддерживает:

  • Автоматический парсинг ответа.
  • Обработку ошибок сети и некорректного JSON.
  • Возможность передачи заголовков и параметров запроса.

Преимущества работы с JSON в Bliss.js

  • Безопасность: методы get и set предотвращают ошибки доступа к несуществующим ключам.
  • Гибкость: фильтры, трансформации и валидаторы упрощают сложные операции с данными.
  • Удобство: интеграция с асинхронными вызовами и форматирование JSON для чтения человеком.
  • Читаемость кода: лаконичные методы заменяют многословные конструкции try/catch и ручные проверки объектов.

Bliss.js делает работу с JSON быстрым, безопасным и наглядным процессом, позволяя сосредоточиться на логике приложения, а не на обработке данных.