jCard
jCard — представление vCard в формате JSON (RFC 7095), где контакт хранится как массив свойств, а не как текстовые строки BEGIN/END.
Определение
jCard — представление формата vCard в JSON, описанное спецификацией RFC 7095 (2014 год, вслед за vCard 4.0). Вместо текстовых строк «свойство:значение» между BEGIN:VCARD и END:VCARD jCard хранит те же данные в виде вложенного JSON-массива. Содержательно jCard и обычный .vcf идентичны — одно и то же имя, телефон, email, — только в нотации, которую JavaScript и REST-сервер понимают без отдельного текстового парсера.
Структура и пример
Документ jCard — массив из двух элементов: строка "vcard" и вложенный массив свойств. Каждое свойство — тоже массив из четырёх позиций: имя поля, параметры, тип данных, значение. Так, ["fn", {}, "text", "Иван Петров"] — это то же самое, что строка FN:Иван Петров в текстовом vCard:
["vcard", [
["version", {}, "text", "4.0"],
["fn", {}, "text", "Иван Петров"],
["tel", {"type":"cell"}, "text", "+79991234567"]
]]
Зачем нужен jCard
Построчно парсить BEGIN/END в браузере или на бэкенде неудобно — jCard снимает эту проблему: массив уходит прямиком в JSON.parse() и встраивается в тело REST-ответа. Формат встречается в серверах CardDAV, синхронизирующих контакты по HTTP, и в CRM, отдающих карточки сотрудников через API.
В QR-кодах jCard почти не применяют: камера смартфона ожидает текстовый .vcf, а не JSON-массив, поэтому для визиток по-прежнему кодируют vCard 3.0 или 4.0 построчно. Сделать такой QR можно на QRkoder, выбрав тип контента «Визитка».
Частые вопросы
Чем jCard отличается от обычного vCard?
Данные те же самые, отличается только нотация. vCard — текстовые строки вида FN:Иван Петров между BEGIN:VCARD и END:VCARD. jCard — тот же контакт в виде JSON-массива свойств из RFC 7095. Конвертация между форматами обратима и не теряет данных.
Можно ли закодировать jCard в QR-код?
Технически да, но на практике не делают. Сканер камеры в iOS и Android ищет в QR текстовый vCard с BEGIN:VCARD, а не JSON-структуру, и не распознает jCard как контакт. Для визиток в QR используют обычный .vcf.
Где реально применяют jCard?
В REST API синхронизации контактов, серверах CardDAV, экспорте адресных книг из CRM в JSON и мобильных SDK, которые уже работают с JSON и не хотят подключать отдельный парсер текстового vCard.
Есть ли аналогичный JSON-формат для календарей?
Да, параллельно с jCard приняли jCal (RFC 7265) — JSON-представление формата iCalendar для событий и встреч. Оба формата используют одну и ту же схему: массив типа, параметров и значения.