Экспорт из After Effects через Bodymovin формирует JSON-файл, который описывает всю анимацию: композицию, слои, ключевые кадры, эффекты и ресурсы. Проверка корректности начинается с анализа структуры:
v — версия формата Lottiefr — частота кадровip / op — начальный и конечный кадрыw / h — размеры композицииlayers — массив слоевassets — подключаемые ресурсы (изображения, вложенные
композиции)Отсутствие обязательных полей или их некорректные значения приводит к ошибкам рендеринга или полной неработоспособности анимации.
Минимальная проверка может выполняться через стандартный парсинг:
try {
const data = JSON.parse(jsonString);
} catch (e) {
console.error('Некорректный JSON:', e);
}
Однако синтаксическая корректность не гарантирует логическую валидность.
Поле v определяет версию формата. Lottie Web
поддерживает ограниченный набор версий, и устаревшие или слишком новые
форматы могут вызывать проблемы.
Критические моменты:
Рекомендуется:
Массив layers — ключевой элемент. Ошибки чаще всего
возникают именно здесь.
Основные типы слоев:
ty: 4)ty: 2)ty: 0)ty: 5)Проблемы:
ks, nm,
ind)assetsПример проверки:
data.layers.forEach(layer => {
if (!layer.ty) {
console.warn('Слой без типа:', layer);
}
});
Анимация строится на ключевых кадрах (k). Ошибки в них
могут проявляться как:
Типичные проблемы:
kt)i, o)Пример структуры:
"k": [
{ "t": 0, "s": [0], "e": [100] }
]
Проверка:
function validateKeyframes(kf) {
return Array.isArray(kf) && kf.every(f => 't' in f);
}
Поле assets содержит:
Ошибки:
p)idПроверка связей:
const assetIds = data.assets.map(a => a.id);
data.layers.forEach(layer => {
if (layer.refId && !assetIds.includes(layer.refId)) {
console.error('Неверная ссылка на asset:', layer.refId);
}
});
Для изображений важно:
p)u)Типичная ошибка:
{
"p": "image.png",
"u": "images/"
}
Если путь неверен — изображение не загрузится.
Текстовые слои (ty: 5) могут содержать:
Важно:
fontsLottie Web не поддерживает:
Признаки:
Решение:
Поля w и h задают размеры. Ошибки приводят
к:
Рекомендуется:
Lottie Web предоставляет инструменты диагностики:
lottie.loadAnimation({
container: document.getElementById('anim'),
renderer: 'svg',
loop: true,
autoplay: true,
animationData: data
});
Ошибки можно отслеживать через консоль браузера:
Даже корректный JSON может содержать визуальные дефекты:
Методы:
svg,
canvas, html)Для комплексной проверки используются:
Пример:
function validateLottie(data) {
return data.v && data.layers && Array.isArray(data.layers);
}
Наиболее распространённые проблемы:
Корректность включает не только работоспособность, но и эффективность:
Инструменты:
Некорректный JSON может работать, но вызывать:
Факторы:
Структура:
Слои:
layers корректныAssets:
Анимация:
Визуал:
Производительность:
Комплексная проверка JSON позволяет избежать большинства проблем ещё до интеграции в приложение, снижает затраты на отладку и обеспечивает стабильную работу анимации в браузере.