При объединении второй объект заменяет совпадения
В первом объекте могут находиться общие настройки, во втором — изменения для конкретного запроса. Объединение поверхностное: совпавшее значение заменяется целиком, включая вложенный объект или массив. Для примера второй объект: {"профиль":{"город":"Казань"},"активен":true}. Поле «имя» из прежнего профиля исчезнет.
Проверьте предупреждение о заменённых ключах и итоговые вложенные значения. Инструмент не выполняет глубокое объединение и не склеивает массивы. Корнями обоих документов должны быть объекты; массив, null или строка вместо объекта вызывают отказ.
{"профиль":{"имя":"Анна","город":"Москва"},"язык":"ru"}{
"профиль": {
"город": "Казань"
},
"язык": "ru",
"активен": true
}Второй объект: {"профиль":{"город":"Казань"},"активен":true}. Старый профиль заменён целиком.
Сортируйте имена полей для удобной сверки
Выберите возрастание и рекурсивную обработку, чтобы одинаковые поля объектов стояли рядом при сравнении. При отключённой рекурсии меняется только корневой объект. Массивы сохраняют порядок элементов: список этапов не становится алфавитным списком.
Имена сортируются по кодовым единицам Unicode, а не по числовому значению или правилам русского словаря. Имя 10 может предшествовать имени 2. Это не канонизация для криптографической подписи и не способ сделать произвольный JSON совместимым с API.
{"z":1,"a":{"z":2,"b":3}}{
"a": {
"b": 3,
"z": 2
},
"z": 1
}Направление — по возрастанию, рекурсия включена; значения сохранены.
Экранируйте текст один раз
В направлении кодирования обычный текст становится одной JSON-строкой с внешними кавычками. Внутренние кавычки, обратная косая черта и переносы экранируются. Для обратной операции нужен именно строковый JSON, а не объект или число.
Вставляя результат в поле запроса, не добавляйте второй слой кавычек. Повторное кодирование упакует уже экранированную строку ещё раз. Проверьте обратное преобразование на коротком фрагменте: оно должно вернуть исходный текст, включая реальные переносы строк.
Анна сказала: "Привет" Вторая строка
"Анна сказала: \"Привет\"\nВторая строка"
Направление: текст в JSON-строку. Обратное направление вернёт кавычки и настоящий перенос.
Сохраните повторяющиеся параметры и строковые типы
Вставьте только query string, с начальным ? или без него: полный URL и фрагмент после # не принимаются. Знак + декодируется как пробел, повторяющиеся имена собираются в массив строк. Параметр page=2 остаётся строкой «2», а не числом.
Обратное направление принимает объект со строками или непустыми массивами строк; числа, null и вложенные объекты отклоняются. Ошибочная процентная или UTF-8-кодировка тоже вызывает отказ. Ввод ограничен 200 000 символов на поле; операции не отправляют запрос API и не заменяют проверку его документации.
?tag=book&tag=new&q=Anna+Ivanova&page=2
{
"tag": [
"book",
"new"
],
"q": "Anna Ivanova",
"page": "2"
}Направление: параметры в JSON. tag сохранён массивом, page — строкой.
- Сверьте ожидаемые имена и типы полей с API.
- Проверьте заменённые значения после объединения.
- Используйте экранирование только для строкового поля.
- Проверьте повторы параметров и сохраните отдельный результат.
Вопросы и ответы
Сохранится ли старое поле вложенного профиля при merge?
Нет, совпавший вложенный объект заменяется вторым целиком. Проверьте результат; глубокое объединение здесь не выполняется.
Сортировка ключей подходит для подписи API-запроса?
Не автоматически. Получатель может требовать отдельный стандарт канонизации; этот инструмент только упорядочивает имена полей.
Почему после экранирования стало больше обратных слешей?
Специальные символы записываются по правилам JSON. Если кодировать уже готовую JSON-строку повторно, появится второй слой экранирования.
Что происходит с двумя параметрами tag в URL?
Оба значения сохраняются в массиве строк. Обратное преобразование снова создаёт повторяющиеся параметры с тем же именем.
Почему page=2 не стал числом в JSON?
Query string передаёт строки. Автоматическое преобразование могло бы испортить ID и типы, поэтому числа здесь не угадываются.
Можно ли вставить полный URL с адресом сайта?
Нет, передайте только часть параметров после вопросительного знака, без адреса и фрагмента #. Запросы к этому адресу не выполняются.