JSON Pointer — пустая строка для всего документа или последовательность токенов с /. После декодирования токены являются точными именами полей, а не выражениями.
Пустая строка — корень, слеш — нет
Пустой указатель выбирает документ целиком. / содержит один пустой токен и выбирает поле с пустым именем. Считать их равными нельзя.
Декодируйте ~1 и ~0 один раз
В токене ~1 означает слеш, а ~0 — тильду. Строка ~01 превращается в ~1, а не в слеш: декодирование однократное. При кодировании сначала заменяйте тильду, потом слеш.
Проверьте декодированные токены
Сверьте каждый токен с исходным именем поля. Один раз декодируйте ~1 в слеш и ~0 в тильду, затем отличайте имена полей от канонических индексов массива. Не путайте пустой указатель корня с / и сверяйте важные пути с контрактом источника.