Статьи о создании сайтов
Как сохраняются значения динамических полей в JSON
Определения контейнера и значения объекта разделены. Что означает вложенное value, почему старые ключи сохраняются и как проверять перенос данных.
На этой странице
Разделите определение и значение
Контейнер описывает поля: ключ, подпись, тип, права и другие параметры. Объект хранит значения под этими ключами. Такая модель позволяет использовать разный набор характеристик в разных разделах без новой SQL-колонки для каждой подписи.
В Switch Pages современные значения обычно включают тип и value, при этом чтение поддерживает и прежние скалярные варианты. Например, старое строковое значение и вложенная запись с value могут быть доступны через общий метод чтения. Это помогает сохранять существующие данные при развитии ядра.
Не путайте JSON со свободным форматом
Гибкое хранение не отменяет определений и проверки. Число, допустимый пункт списка и дата проверяются по типу поля. Неизвестные или устаревшие ключи сохраняются при обычном редактировании, но это не означает их автоматический публичный вывод.
Если значение нужно преобразовать, например из сантиметров в миллиметры, составьте явную миграцию с проверенной копией. Простое изменение подписи или типа в произвольном SQL не переводит прежние данные в новый смысл. В штатных определениях тип существующего поля сохраняется; для другого типа создают новое поле.
Проверяйте перенос на контрольных примерах
Сохраните исходный JSON нескольких объектов, включая старые и вложенные значения. После миграции сравните ключи, содержание, ID и привязки медиа. Отдельно откройте запись и сохраните небольшое разрешённое изменение, убедившись, что соседние исторические значения не потерялись.
Не выводите весь JSON посетителю ради удобства фронтенда: внутри могут быть непубличные сведения. Представление должно применять определения и права. JSON является способом хранения модели, а не разрешением обходить валидацию, роль пользователя и контроль фактического вывода.
Продолжить работу
Проверьте структуру и права на отдельной копии перед массовым переносом. Сопоставьте задачу с возможностями ядра. Другой материал этого раздела: Множественный выбор для признаков и удобств.
