Відхилення повторених полів JSON
Відхиляйте повторені поля JSON на будь-якій глибині замість збереження останнього значення.
import json
def unique_members(pairs):
result = {}
for key, value in pairs:
if key in result:
raise ValueError("member.duplicate")
result[key] = value
return result
def reject_constant(value):
raise ValueError("constant.invalid")
def parse_unique(text):
return json.loads(text, object_pairs_hook=unique_members,
parse_constant=reject_constant)| Перевірте перед застосуванням | Порівняйте фактичну поведінку з очікуваним результатом. Якщо перевірка не проходить, з’ясуйте причину перед наступними змінами. |
|---|---|
| Моделі | Налаштуйте OpenAI-сумісний або Anthropic endpoint із базовою URL-адресою та API-ключем, якщо він потрібен. Перевірте з’єднання. Локальний сервер моделі має працювати; віддалені інструменти можуть окремо передавати дані. |
| Проєкт | Перевірте еквівалентно екрановані ключі й літерали NaN або Infinity, дозволяючи однакові назви в різних об’єктах. |
import json
def unique_members(pairs):
result = {}
for key, value in pairs:
if key in result:
raise ValueError("member.duplicate")
result[key] = value
return result
def reject_constant(value):
raise ValueError("constant.invalid")
def parse_unique(text):
return json.loads(text, object_pairs_hook=unique_members,
parse_constant=reject_constant)Зробіть відхилений JSON частиною контракту застосунку
KeySentra пропонує середовище програмування Windows для обговорення змін коду з підключеною моделлю ШІ. Завдання розбору має починатися з правил прийнятності застосунку, а не просто запиту прочитати JSON. Відкрийте папку проєкту й визначте, де текст потрапляє до парсера та де розібраний об’єкт стає довіреними даними застосунку.
Наприклад, можна вимагати відхилення повторюваних полів об’єкта замість непомітного збереження одного значення. Додайте до обговорення вкладені об’єкти й еквівалентні після декодування ключі з escape-послідовностями та поясніть, як код виклику повідомляє про відхилені дані. Мета — перевірна зміна шляху приймання даних; саме середовище не стає JSON-парсером застосунку.
Читайте запропоновані правки разом із тестовими даними, що відрізняють неоднозначні дані від допустимого повторення в різних об’єктах. Перевірте нестандартні числові константи, якщо контракт їх відхиляє. Запустіть ці випадки інструментами проєкту й дослідіть результат парсера та поведінку коду виклику, щоб суворіше оброблення даних не перетворило очікувану клієнтську помилку на необроблений збій.
KeySentra підтримує підключення кінцевих точок, сумісних з OpenAI, або Anthropic, за потреби з обліковими даними. Модель ШІ без фільтрів може бути одним із варіантів цієї кінцевої точки. Позначення не визначає політику парсера й не гарантує використання сервісу без фільтрів. Модель і сервер усе одно визначають місткість контексту, підтримку інструментів та власні умови роботи.
Запитання про посилення правил прийняття JSON
Які приклади дублікатів корисні для перевірки?
Додайте повторюваний ключ в одному об’єкті, вкладений дублікат і написання з escape-послідовностями, які декодуються в ту саму назву. Також додайте окремі об’єкти, які правомірно використовують однаковий ключ. Пропозиція має розрізняти ці випадки за визначеною вами політикою.
Чи слід відхиляти кожну повторювану назву поля?
Уважно визначте межі: повторювані назви в одному об’єкті відрізняються від тієї самої назви в окремих об’єктах. Попросіть модель дослідити відстеження меж об’єктів парсером, потім перевірте, що застосунок і далі приймає допустимі вкладені структури.
Навіщо перевіряти код виклику після посилення розбору?
Нові випадки відхилення мають потрапляти до очікуваного застосунком шляху відповіді чи помилки. Покажіть цей код у розмові та протестуйте його поведінку. Правильного виявлення неоднозначності недостатньо, якщо отриманий збій неправильно обробляється в іншому місці запиту.
Чи можна використовувати виробничі дані як тестові?
Віддавайте перевагу скороченим даним, очищеним від конфіденційної інформації, зі збереженням потрібної структури ключів і числових випадків. Налаштована кінцева точка отримує контекст, яким ви ділитеся, а підключені інструменти можуть мати окремі адреси. Не додавайте дані клієнтів і облікові дані до непотрібних прикладів.
KeySentra · Оновлено 2026-10-25