Это вопрос "Можете ли вы" . А вот ответ "да" .
Нет, вы не должны использовать дублирующие члены объекта для помещения данных побочного канала в кодировку JSON. (См. «Имена внутри объекта ДОЛЖНЫ быть уникальными» в RFC ).
И да, вы можете вставить комментарии вокруг JSON , которые вы могли бы проанализировать.
Но если вам нужен способ вставки и извлечения произвольных данных побочного канала в допустимый JSON, вот ответ. Мы используем преимущество неуникального представления данных в кодировке JSON. Это разрешено * во втором разделе RFC в разделе «Пробелы разрешены до или после любого из шести структурных символов».
* В RFC указывается только «пробел разрешен до или после любого из шести структурных символов», без явного упоминания строк, чисел, «false», «true» и «null». ». Это упущение игнорируется во ВСЕХ реализациях.
Во-первых, канонизируйте ваш JSON, свернув его:
$jsonMin = json_encode(json_decode($json));
Затем закодируйте ваш комментарий в двоичном виде:
$hex = unpack('H*', $comment);
$commentBinary = base_convert($hex[1], 16, 2);
Затем включите бинарный файл:
$steg = str_replace('0', ' ', $commentBinary);
$steg = str_replace('1', "\t", $steg);
Вот ваш вывод:
$jsonWithComment = $steg . $jsonMin;