PPointerMallow
Робоче середовище з ШІ для коду

Навігація за JSON Pointer

Розв'яжіть JSON Pointer у словниках і списках без їх зміни.

● ● ●PointerMallow●
Сценарії · Навігація за JSON Pointer ×
import re
def pointer_get(root, pointer):
    if not isinstance(pointer, str): raise ValueError("pointer text")
    if pointer == "": return root
    if not pointer.startswith("/"): raise ValueError("root slash")
    value = root
    for raw in pointer[1:].split("/"):
        if re.search(r"~(?![01])", raw): raise ValueError("escape")
        key = raw.replace("~1", "/").replace("~0", "~")
        if isinstance(value, dict): value = value[key]
        elif isinstance(value, list):
            if not re.fullmatch(r"0|[1-9][0-9]*", key):
                raise ValueError("array index")
            if len(key) > len(str(len(value))): raise IndexError(key)
            value = value[int(key)]
        else: raise ValueError("not a container")
    return value
✳Розв'яжіть JSON Pointer у словниках і списках без їх зміни.
✓ ЗміниПеревірте перед застосуванням ↗
Ілюстрація робочого середовища
01

Проєкт

Перевірте порожній кореневий вказівник та екрановані ключі, відхиляючи хибні escape-послідовності, відсутні елементи й неканонічні індекси.

02

Перевірте перед застосуванням

Порівняйте фактичну поведінку з очікуваним результатом. Якщо перевірка не проходить, з’ясуйте причину перед наступними змінами.

03

Моделі

Налаштуйте OpenAI-сумісний або Anthropic endpoint із базовою URL-адресою та API-ключем, якщо він потрібен. Перевірте з’єднання. Локальний сервер моделі має працювати; віддалені інструменти можуть окремо передавати дані.

Сценарії

Навігація за JSON Pointer

Сценарії ↗
Сценарії
import re
def pointer_get(root, pointer):
    if not isinstance(pointer, str): raise ValueError("pointer text")
    if pointer == "": return root
    if not pointer.startswith("/"): raise ValueError("root slash")
    value = root
    for raw in pointer[1:].split("/"):
        if re.search(r"~(?![01])", raw): raise ValueError("escape")
        key = raw.replace("~1", "/").replace("~0", "~")
        if isinstance(value, dict): value = value[key]
        elif isinstance(value, list):
            if not re.fullmatch(r"0|[1-9][0-9]*", key):
                raise ValueError("array index")
            if len(key) > len(str(len(value))): raise IndexError(key)
            value = value[int(key)]
        else: raise ValueError("not a container")
    return value
Робоче середовище з ШІ для коду

Простежте пошук від вхідного шляху до використаного значення

PointerMallow надає розробникам середовище програмування з ШІ для Windows, де можна простежувати поведінку структурованих даних у проєкті. Невдалий пошук легше діагностувати, коли розмова містить шлях, форму даних та очікуване значення. Почніть із невеликого відтворюваного прикладу й попросіть модель вивчити реалізацію, яка фактично його споживає.

Розгляньте пошук за JSON Pointer як один із запитів. Надайте ключ об’єкта зі скісною рискою, індекс масиву й відсутню ціль, а потім визначте очікуваний результат кожного. Попросіть точкове виправлення, якщо поточний код неправильно обробляє ці шляхи. Цінність полягає у зв’язку тестових даних із вашою реалізацією та кодом виклику.

Перевіряйте пропозицію не лише за успішним результатом. Некоректний шлях, відсутній ключ і прохід через скаляр можуть потребувати різної обробки у вашому застосунку. Прочитайте зміни й виконайте відповідні тести, перевіряючи помилку, яку отримує споживач, так само уважно, як значення для коректного пошуку.

Підключення моделі може використовувати підтримувану OpenAI-сумісну кінцеву точку або кінцеву точку Anthropic з потрібними обліковими даними. Якщо ви вибираєте запропоновану там аблітеровану модель ШІ, обмеження постачальника все одно діють. Межі контексту й інструменти різняться залежно від моделі та сервера, тому зберігайте невеликі приклади, що дозволяють безпосередньо оцінювати міркування й код.

Визначення поведінки пошуку в структурованих даних

Як відрізнити некоректний шлях від відсутнього значення?

Надайте окремі приклади та очікувані результати для обох. Запитайте, де в поточному коді закінчується розбір і починається обхід, а потім перевірте, як кожна помилка доходить до коду виклику. Зведення їх до одного порожнього результату може приховати помилку введення.

Чи слід обробляти числовий ключ об’єкта як індекс масиву?

Важливий тип контейнера. Додайте приклад ключа об’єкта, схожого на число, й окремий приклад масиву. Перевірте гілку обробки шляху для кожного, не припускаючи, що однаковий текст завжди називає той самий тип місця.

Навіщо використовувати невеликий приклад замість повних даних?

Він ізолює форму даних, що спричиняє проблему, і полегшує перевірку очікуваного результату. Вилучіть непов’язані поля й конфіденційні значення, зберігши проблемний шлях, а після цього підтвердьте виправлення на характерних даних проєкту.

Чи може вибір моделі змінити контракт пошуку?

Контракт належить вашому застосунку. Інша модель може запропонувати іншу домовленість про помилки, але це не дозволяє змінювати поведінку. Перевіряйте також місця призначення інструментів: локальний сервер моделі не робить усі підключені інструменти локальними.

Завантажити для Windows ↗

PointerMallow · Оновлено 2026-10-25