1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-JSONCoder

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
JSONEX.md 4.8 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 28.11.2024 11:13 d575dc0

Спецификация JSONex

Обзор

JSON — популярный формат для сериализации данных и конфигурации, но из-за ограничений оригинального стандарта его становится сложно использовать для конфигурации. Поэтому были созданы различные альтернативные форматы, такие как YAML и TOML. Несмотря на преимущества формата JSON, такие как простота, самоочевидность и совместимость с синтаксисом JavaScript, мы считаем, что JSON подходит для конфигурации с некоторыми незначительными расширениями. Таким образом, мы предлагаем расширенный формат JSON JSONex, который поддерживается библиотеками Jsonex на Java и TypeScript.

Проблемы с JSON

  • Обязательные кавычки для ключей: это ненужные избыточные данные, которые только занимают место и увеличивают объём передаваемых данных, а также усложняют написание и чтение.
  • Можно использовать только двойные кавычки ("): в отличие от JavaScript, где можно использовать одинарные (') или обратные (`) кавычки, такая гибкость позволяет исключить множество экранирований.
  • Отсутствие поддержки комментариев: это наиболее часто упоминаемая проблема формата конфигурации.
  • Не поддерживает многострочные строковые литералы: как конфигурация, нам часто нужно встраивать структурированный текст.
  • Запятые не допускаются в конце последнего элемента: это вызывает множество проблем при объединении и затрудняет комментирование одной строки. В JavaScript это разрешено.

Предложение

Чтобы решить вышеуказанные ограничения, мы предлагаем JSONEX со следующими расширениями:

  • Полная совместимость с синтаксисом объектных литералов ES6 (поэтому нет необходимости в специальном парсере для JavaScript).
  • Стандартный JSON является валидным JSONEX.
  • Поддержка линейных/блочных комментариев, как в JavaScript.
  • Кавычки для ключа необязательны, только если ключ не является допустимым идентификатором JavaScript, кавычки обязательны.
  • Можно использовать либо ("), либо (') или (`).
  • Поддерживаются многострочные строковые литералы с обратной кавычкой (`).
  • Запятые разрешены для последнего элемента (делает объединение более удобным).
  • Порядок атрибутов объекта имеет значение, этот порядок будет сохранён.

Примеры

Обычный JSON

{
  "name": "project \"Name\"",
  "version": "0.1.0",
  "scripts": {
    "lint": "vue-cli-service lint"
  },
  "dependencies": {
    "axios": "^0.18.0",
    "bootstrap": "^4.1.1"
  },
  "multiLine": "line1\nline2"
}

JSONEX

// Формат JSONEX
{
  name: 'project"Name"',  /* Нет экранирования двойных кавычек, когда они заключены в одинарные кавычки */
  version: "0.1.0",
  scripts: {
    lint: "vue-cli-service lint",   // Разрешить запятую после последнего элемента
  },
  dependencies: {
    axios: "^0.18.0",
    bootstrap: "^4.1.1",
  },
  // Используйте обратную кавычку для многострочного литерала
  multiLine: `line1  
line2`,
}

Другие аналогичные усилия

Смотрите JSONex в живом просмотрщике

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mirrors-JSONCoder.git
git@api.gitlife.ru:oschina-mirror/mirrors-JSONCoder.git
oschina-mirror
mirrors-JSONCoder
mirrors-JSONCoder
master