Разобрать json php: PHP: json_decode — Manual

JSON

JSON

Содержание
Введение
Пример
Похожие статьи

Введение

Пример

Нужно прочитать из робота файл

users.json

и разобрать его содержимое

Структура проекта

json/
├── data
│ └── users.json
└── src
└── json.robot
2 directories, 2 files

{
«users»: [{
«username»: «tester0»,
«password»: «secret0»,
«firstname»: «Dmitry»,
«lastname»: «Mendeleev»,
«phone»: 12345
},
{
«username»: «tester1»,
«password»: «secret0»,
«firstname»: «Nikolai»,
«lastname»: «Basov»,
«phone»: 12346
}
]
}

Robot Framework

*** Settings ***
Library OperatingSystem
Library Collections
*** Test Cases ***
Loading JSON
${json}= Get File . ./users.json
${object}= Evaluate json.loads(»’${json}»’) json
Log To Console ${object[«users»][0][«username»]}
&{user0}= Convert To Dictionary ${object[«users»][0]}
Log To Console ${user0}

robot json_from_file.robot

==============================================================================
Json
==============================================================================
Loading JSON ..tester0
..{‘username’: ‘tester0’, ‘password’: ‘secret0’, ‘firstname’: ‘Dmitry’, ‘lastname’: ‘Mendeleev’, ‘phone’: 12345}
Loading JSON | PASS |
——————————————————————————
Json | PASS |
1 test, 1 passed, 0 failed
==============================================================================
Output: /home/andrei/sandbox/robot/json/src/output. xml
Log: /home/andrei/sandbox/robot/json/src/log.html
Report: /home/andrei/sandbox/robot/json/src/report.html

Указать путь от текущей директории можно с помощью Normalize Path и CURDIR

${path}= Normalize path ${CURDIR}/../../../../data/users.json
${json}= Get File ${path}

Похожие статьи
Robot Framework
Основы
RFBrowser
Объявить переменную
if else: Условные операторы
in: Оператор принадлежности к списку
Циклы
Изменить значение переменной
Перенос на новую строку
[Tags]: тэги
Collections: списки, словари
JSON
Передача аргументов в кейворд
Evaluate
Поддержка Robot в PyCharm

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить
за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Образование

Актуально сейчас

Разное

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить
за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Контакты и сотрудничество:
Рекомендую наш хостинг beget. ru
Пишите на
[email protected] если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящуюю по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели
рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок
или вводящий в заблуждение — пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д.

…….
5. Статьи можно расшарить в соцсетях, нажав на иконку сети:

[Сеть, интернет] Разбор JSON-ответа от сервера и получение переменных

#include <Array.au3>
;Example starts here
Local $aReturn, $aInhaber, $aHobbies, $aStandort, $sText
$sText = _
        '{' & @CRLF & _
        '  "Herausgeber": "Xema",' & @CRLF & _
        '  "Nummer": "1234-5678-9012-3456",' & @CRLF & _
        '  "Deckung": 2e+6,' & @CRLF & _
        '  "Währung": "EURO",' & @CRLF & _
        '  "Inhaber": {' & @CRLF & _
        '    "Name": "Reich",' & @CRLF & _
        '    "Vorname": "Rainer",' & @CRLF & _
        '    "männlich": true,' & @CRLF & _
        '    "Hobbys": [ "Reiten", "Golfen", "Lesen" ],' & @CRLF & _
        '    "Alter": 42,' & @CRLF & _
        '    "SozialesGewissen": null' & @CRLF & _
        '  }' & @CRLF & _
        '  "Firma": "Abc-Firma",' & @CRLF & _
        '  "Standort": ["Am Gewerbegebiet 25", "Etage 2"]' & @CRLF & _
        '}' & @CRLF
$aReturn = _JSON_Decode($sText)
$aInhaber = $aReturn[4][1] ; Child Array
$aHobbies = $aInhaber[3][1] ; Child Array from $aInhaber
$aStandort = $aReturn[6][1] ; Child Array
_ArrayDisplay($aReturn, "Hauptobjekt")
_ArrayDisplay($aInhaber, "Inhaber")
_ArrayDisplay($aHobbies, "Hobbies")
_ArrayDisplay($aReturn, "Hauptobjekt")
_ArrayDisplay($aStandort, "Standort")
$sEncoded = _JSON_Encode($aReturn)
MsgBox(0,"",$sEncoded)
;Functions start here
Func _JSON_Decode($sString)
    Local $iIndex, $aVal, $sOldStr = $sString, $b
    $sString = StringStripCR(StringStripWS($sString, 7))
    If Not StringRegExp($sString, "(?i)^\{. "]+)"\s*:\s*(["{[]|[-+]?\d+(?:(?:\.\d+)?[eE][+-]\d+)?|true|false|null)', 2) ; Get value & next token
        If @error Then
            ConsoleWrite("!> StringRegExp Error getting next Value." & @CRLF)
            ConsoleWrite($sString & @CRLF)
            $sString = StringMid($sString, 2) ; maybe it works when the string is trimmed by 1 char from the left ?
            ContinueLoop
        EndIf
        $aArray[$iIndex][0] = $aVal[1] ; Key
        $sString = StringMid($sString, StringLen($aVal[0]))
        Switch $aVal[2] ; Value Type (Array, Object, String) ?
            Case '"' ; String
                ; Value -> Array subscript. Trim String after that.
                $aArray[$iIndex][1] = StringMid($sString, 2, StringInStr($sString, """", 1, 2) - 2)
                $sString = StringMid($sString, StringLen($aArray[$iIndex][1]) + 3)
                ReDim $aArray[$iIndex + 2][2]
                $iIndex += 1
            Case '{' ; Object
                ; Recursive function call which will decode the object and return it. \s*(["{[]|\d+(?:(?:\.\d+)?[eE]\+\d+)?|true|false|null)', 2)
                    Switch $aNextArrayVal[1]
                        Case '"' ; String
                            ; Value -> Array subscript. Trim String after that.
                            $aRet[$iArIndex] = StringMid($sString, 2, StringInStr($sString, """", 1, 2) - 2)
                            $sString = StringMid($sString, StringLen($aRet[$iArIndex]) + 3)
                        Case "{" ; Object
                            ; Recursive function call which will decode the object and return it.
                            ; Object -> Array subscript. Trim String after that.
                            $aRet[$iArIndex] = _JSON_Decode($sString)
                            $sString = StringMid($sString, @extended + 2)
                        Case "["
                            MsgBox(0, "", "Array in Array. WTF is up with this JSON shit?")
                            MsgBox(0, "", "This should not happen! Please post this!")
                            Exit 0xDEADBEEF
                        Case Else
                            ConsoleWrite("Array Else (maybe buggy?)" & @CRLF)
                            $aRet[$iArIndex] = $aNextArrayVal[1]
                    EndSwitch
                    ReDim $aRet[$iArIndex + 2]
                    $iArIndex += 1
                    $sString = StringStripWS($sString, 3) ; Leading & trailing
                    If StringLeft($sString, 1) = "]" Then ExitLoop
                    $sString = StringMid($sString, 2)
                Until False
                $sString = StringMid($sString, 2)
                ReDim $aRet[$iArIndex]
                $aArray[$iIndex][1] = $aRet
                ReDim $aArray[$iIndex + 2][2]
                $iIndex += 1
            Case Else ; Number, bool
                ; Value (number (int/flaot), boolean, null) -> Array subscript.  Trim String after that.
                $aArray[$iIndex][1] = $aVal[2]
                ReDim $aArray[$iIndex + 2][2]
                $iIndex += 1
                $sString = StringMid($sString, StringLen($aArray[$iIndex][1]) + 2)
        EndSwitch
        If StringLeft($sString, 1) = "}" Then
            StringMid($sString, 2)
            ExitLoop
        EndIf
        If Not $b Then $sString = StringMid($sString, 2)
    Until False
    ReDim $aArray[$iIndex][2]
    Return SetError(0, StringLen($sOldStr) - StringLen($sString), $aArray)
EndFunc   ;==>_JSON_Decode
Func _JSON_Encode($aArray)
    Local $sString, $iDim = UBound($aArray, 0), $iUB, $iUB_2
    Switch $iDim ; What type of Property?
        Case 2 ; Object
            $sString = "{"
            $iUB = UBound($aArray)
            $iUB_2 = UBound($aArray,2)
            For $i = 0 To $iUB-1
                $sString &= '"' & $aArray[$i][0] & '":'
                If IsArray($aArray[$i][1]) Then
                    $sString &= _JSON_Encode($aArray[$i][1])
                Else
                    $sString &= '"' & $aArray[$i][1] & '"'
                EndIf
                $sString &= ","
            Next
            $sString = StringTrimRight($sString, 1) & "}"
        Case 1 ; Array
            $sString = "["
            $iUB = UBound($aArray)
            For $i = 0 To $iUB - 1
                If IsArray($aArray[$i]) Then
                    $sString &= _JSON_Encode($aArray[$i])
                Else
                    $sString &= '"' & $aArray[$i] & '"'
                EndIf
                $sString &= ","
            Next
            $sString = StringTrimRight($sString, 1) & "]"
        Case Else
            Return SetError(1, 0, "")
    EndSwitch
    Return $sString
EndFunc   ;==>_JSON_Encode

реализаций | Схема JSON

ПРИМЕЧАНИЕ. На этой странице перечислены реализации с поддержкой (или активные разработки) для draft-06 или более поздней версии.

Информацию о реализациях, поддерживающих только версию draft-04 или более раннюю, или которые больше не находятся в разработке, см. на странице «Устаревшие реализации».

  • Валидаторы
    • Бенчмарки
    • Документация API
    • Ссылка Описание Утилиты объекта
  • Генераторы схем
    • Из кода
    • Из данных
    • Начиная с модели
  • Генераторы из схем
    • Генерация кода
    • Поколение веб-интерфейса
    • Данные из схем
  • Коммунальные услуги
    • Общая обработка
    • Схема

    • на схему
    • Перенос проекта схемы
    • Преобразователи форматов
    • Тестирование
    • Редакторы
    • Генераторы документации
  • Хранилища схем
  • Схема Линтер
  • Гиперсхема

Приведенные ниже реализации написаны на разных языках и частично или полностью поддерживают по крайней мере одну последнюю версию спецификации.

Реализации классифицируются на основе их функциональных возможностей. Когда известно, также упоминается лицензия проекта.

Если у вас есть обновления для этого списка, сделайте запрос на вытягивание в репозитории GitHub.

Листинг не означает рекомендацию или одобрение любого рода.

Валидаторы #

Контрольные показатели #

Здесь могут быть перечислены эталонные тесты, которые сравнивают как минимум две реализации, поддерживающие draft-06+.

  • Перейти
    • validator-benchmarks — тест валидаторов Go JSON Schema на основе официального набора тестов
  • JavaScript
    • json-schema-benchmark — независимый тест для валидаторов JSON-схемы Node.js на основе JSON-Schema Test Suite (MIT)
  • PHP
    • php-json-schema-bench — сравнительный тест для валидаторов PHP с JSON-схемой с использованием JSON-Schema Test Suite и z-schema/JSCK (MIT)

Документация по API #

  • JavaScript
    • @cloudflare/doca (инструменты схемы JSON), draft-04, -06, -07 и расширения Doca (ожидается пользовательский интерфейс)
    • @adobe/jsonschema2md упрощает задачу, предоставляя ряд сценариев, которые могут превращать файлы схемы JSON в удобочитаемую документацию Markdown, готовую для использования на GitHub или обработанную с помощью Jekyll или других генераторов статических сайтов. Схема JSON 2019-09 (частично)
  • Питон
    • FastAPI (MIT) — это платформа API, основанная на типах Python 3.6+, которая генерирует OpenAPI 3 схем, включая схем JSON для всех заявленных моделей.

Ссылка Описание Утилиты объекта #

  • JavaScript
    • @cloudflare/json-hyper-schema draft-07, -06, -04 (BSD-3-пункт)

Генераторы схем #

Генераторы схем не должны поддерживать создание каждого ключевого слова схемы.
Для генераторов схем совместимость с черновиком означает, что:

  • Созданные схемы явно задают черновик с помощью $schema
  • В созданных схемах отсутствует $schema , но они действительны по отношению к соответствующей метасхеме

Например, единственные несовместимости между draft-04 и draft-06 включают эксклюзивный минимум , эксклюзивный максимум и id против $id . Если генератор не устанавливает $schema и никогда не выдает эти ключевые слова, то он совместим с draft-06, даже если он был написан с учетом draft-04.

Из кода #

  • .NET
    • Json.NET (AGPL-3.0) — генерирует схемы из типов .NET
    • NJsonSchema — (Ms-PL) — генерирует схемы из типов .NET, см. проблему 574, чтобы узнать о прогрессе поддержки draft-06+
    • JsonSchema.Net.Generation (MIT) — генерирует схемы из типов .NET
  • Перейти
    • jsonschema — (MIT) — генерировать схемы из структур Go. Поддерживает проект 2020-12.
  • PHP
    • Liform (MIT) — генерирует схемы из форм Symfony
  • машинописный текст
    • машинопись-json-схема
  • Питон
    • Pydantic (MIT) — генерирует схемы из моделей Python на основе подсказок типов Python 3. 6+.
    • msgpec (BSD-3-Clause) — генерирует схемы из аннотаций типов Python.
    • mashumaro (Apache 2.0) — генерирует схемы из аннотаций типа Python
  • Ява
    • jsonschema-generator (Apache 2.0) — генерирует схемы из типов Java поддерживает Draft 7 и Draft 2019-09
  • Скала
    • scala-jsonschema (Apache 2.0) — генерирует схему из классов случаев Scala
  • Рубин
    • Shale (MIT) — генерирует схему из моделей Ruby поддерживает Draft 2020-12
  • Ржавчина
    • Schemars (MIT) — генерирует схему из кода Rust поддерживает Draft 7

Из данных #

  • Ява
    • saasquatch/json-schema-inferrer 2020-12, 2019-09, draft-07, draft-06, draft-04 (Apache 2.0) — библиотека Java для вывода схем JSON из одного или нескольких образцов JSON.
  • Скала
    • Schema Guru (Apache 2.0) — утилита CLI, Spark Job и веб-интерфейс для получения схем JSON из корпуса экземпляров JSON; см. выпуск 178, чтобы узнать о ходе работы над поддержкой Draft-06+
    • JSONoid (MIT) — инструмент командной строки и приложение Spark для вывода схем из документов JSON, поддерживает проект 2019-09
  • Кложур
    • luposlip/json-schema (Apache 2.0) — вывести схему JSON из данных Clojure
  • Онлайн (веб-инструмент)
    • jsonschema.net — генерирует схемы из примеров данных
    • Онлайн-инструменты Liquid — вывод схемы JSON из образца данных JSON
    • quicktype.io — вывод схемы JSON из образцов и создание типов TypeScript, C++, go, Java, C#, Swift и т. д. из схемы JSON

От модели №

  • Dataspecer — генерирует схему JSON (и контекст JSON-LD) из концептуальной модели поддерживает Draft 2020-12

Генераторы из схем #

Инструменты, генерирующие артефакты из схем, не обязательно должны поддерживать каждое ключевое слово,
поскольку не все ключевые слова хорошо подходят для генеративных вариантов использования.

Генераторы считаются совместимыми с тягой, если они поддерживают (или мягко
игнорировать) соответствующий $schema значение и интерпретировать ключевые слова, которые они
сделать поддержку в соответствии с этим проектом.

Например, если генератор, изначально написанный для draft-04, не
поддержка id , эксклюзивный минимум или эксклюзивный максимум , тогда до тех пор, пока он это делает
не требует draft-04 $schema , она совместима с draft-06, так как те
единственные ключевые слова, которые изменились.

Генерация кода #

  • Дотнет
    • Corvus.JsonSchema — создает идиоматическую модель типа dotnet из файлов схемы JSON, поддерживая все функции схемы JSON, включая методы доступа к свойствам, перечисление, общий формат строки и построение/изменение документа JSON; над низкоуровневыми типами System.Text. Json . поддерживает проекты 6, 7, 2019-09 и 2020-12 .
  • Вяз
    • json-schema-to-elm — генерирует типы Elm, декодеры и кодировщики JSON и нечеткие тесты из одного или нескольких файлов схемы JSON с использованием dragonwasrobot/json_schema поддерживает проект 7
  • Перейти
    • go-jsonschema — генерирует типы Go и помощники из файлов схемы JSON поддерживает Draft 2020-12
  • Ява
    • jsonCodeGen (MIT) — задачи генерации на основе Groovy из схемы JSON. Уже включает шаблоны/генераторы для Java Beans, файлы спецификаций Swagger и диаграммы PlantUML.
    • jsonschema2pojo (Apache 2.0) — генерирует типы Java из схемы JSON (или примера JSON) и может аннотировать эти типы для привязки данных с помощью Jackson 2.x или Gson. черновик-07
    • jsonschematypes (Apache 2.0) — библиотека Java для создания классов Java или TypeScript из стандартных схем JSON. Схема JSON 2019-09, черновик-07, -06, -04, -03
    • jsongenerator Схема JSON 2019-09, draft-07, -06, -04, -03 (Apache-2.0)
  • Котлин
    • json-kotlin-schema-codegen (MIT) — генерирует классы данных Kotlin, классы Java или интерфейсы TypeScript из схемы JSON.
  • Онлайн (веб-инструмент)
    • quicktype.io — вывод схемы JSON из образцов и создание типов TypeScript, C++, go, Java, C#, Swift и т. д. из схемы JSON
  • PHP
    • php-code-builder (MIT) — генерирует структуры сопоставления PHP, определенные схемой JSON, с использованием swaggest/json-schema поддерживает Draft 7
  • Питон
    • yacg (MIT) — анализировать файлы JSON Schema и OpenApi для построения из них метамодели. Эту метамодель можно использовать в шаблонах Mako для генерации исходного кода, других схем или plantUml.
    • statham (MIT) — создание моделей с аннотациями типов из документов JSON Schema.
  • Ржавчина
    • схема — генерирует типы Rust и код сериализации из схемы JSON. поддерживает проект 4
  • Скала
    • json-schema-to-case-class (MIT) — пакет NPM, веб-интерфейс и интерфейс командной строки для создания классов случаев Scala из схемы JSON. Поддерживает схему JSON 2019-09, draft-07, -06, -04, -03
  • машинописный текст
    • jsongenerator Схема JSON 2019-09, draft-07, -06, -04, -03 (Apache-2.0)
  • Рубин
    • Shale (MIT) — генерирует модели Ruby из схемы JSON. поддерживает Draft 2020-12
    • .

Генерация веб-интерфейса #

TODO: Сортировка по поддержке проекта.

Различные уровни поддержки создания пользовательского интерфейса, в основном из словаря проверки или в сочетании с конкретным определением пользовательского интерфейса.

  • JavaScript
    • Формы из альпаки (ASL 2.0)
    • Форма угловой схемы (MIT)
    • Форма схемы Angular2 , не связанная с формой схемы Angular (MIT)
    • Angular6-json-схема-форма (MIT)
    • Форма схемы Dashjoin JSON (Apache 2) draft-06 (минус oneOf, anyOf, allOf, not)
    • Редактор JSON (MIT)
    • Форма JSON (joshfire) (joshfire) (MIT)
    • Json Forms (брутузин) (брутузин) (MIT)
    • JSONForms (jsonforms.io) (EclipseSource) (MIT)
    • Лиформ-реакт (MIT)
    • Форма схемы React JSON (mozilla) (Apache 2)
    • Форма схемы React Json (Mui) (MIT)
    • Форма схемы React (networknt) (MIT)
    • Форма схемы пространства отдыха (MIT)
    • униформа (Вазко) (MIT)
    • Схема пользовательского интерфейса для React (MIT) 2019-09 / draft-08, -07, -06, -04 (несовместимый тип = целое число )

Данные со схем #

  • . Нет
    • JsonSchema.Net.DataGeneration (MIT) Генерация данных из схем JSON с помощью библиотеки генерации тестовых данных Bogus.
  • Питон
    • гипотеза-jsonschema (MPL) draft-07, -06, -04 ; принимает любую схему, даже со сложными и взаимодействующими ограничениями, и возвращает стратегию Hypothesis, которая может генерировать действительные документы для тестирования.
  • Ява
    • jsongenerator Схема JSON 2019-09, draft-07, -06, -04, -03 (Apache-2.0)

Утилиты #

Совместимость с проектами коммунальных услуг обычно зависит от цели
полезность, и решается в каждом конкретном случае.

Общая обработка #

  • JavaScript
    • json-schema-ref-parser (MIT) Инструменты для разыменования нециклических схем, объединения связанных схем в один файл и другой обработки $ref .
    • json-schema-library (MIT) — Предоставляет инструменты для работы с json-схемой, в том числе: создание данных из json-схемы, обработка $ref , просмотр схем и т. д.
    • @cloudflare/json-schema-walker (инструменты JSON Schema Tools), draft-07, -06, -04 и расширения Doca от Cloudflare Обходит схемы и выполняет предварительные и постобходные обратные вызовы. Может изменять схемы на месте. (Статья BSD-3)
    • @hyperjump/json-схема-ядро
      (MIT) Инструменты для работы со схемами, обрабатывающими идентификаторы и
      Рекомендации. Создавайте словари и другие инструменты на основе схемы JSON.

Схема к схеме #

  • JavaScript
    • @cloudflare/json-schema-transform (JSON Schema Tools), (BSD-3-Clause) Утилиты, использующие @cloudflare/json-schema-walker для преобразований, включая allOf слияние и пример объединения.
    • mokkabanna/json-schema-merge-allof (MIT)
    • mokkabanna/json-схема-сравнить (MIT)
    • loganvolkers/json-schema-resolve-allof ( лицензия не указана )
    • JSON-Схема-Инстантиатор (MIT)

Миграция проекта схемы #

  • JavaScript
    • AlterSchema Схема JSON 2020-12, 2019-09, осадка-07, -06, -04

Преобразователи форматов #

  • OpenAPI
    • Схема JSON для схемы OpenAPI draft-04 Draft-06 и -07 запланированы согласно README (MIT)
    • Спецификация OpenAPI для JSON Schema Draft-07 (MIT)
  • Санитар
    • Дежурный (BSD-3-Статья)
  • РАМЛ
    • ramldt2jsonсхема черновик-06, 04 (Apache-2.0)
  • Веб-пакет
    • @cloudflare/json-schema-ref-loader (инструменты схемы JSON), (BSD-3-Clause) загрузчик Webpack для разыменовываемых схем в JSON, JSON5, YAML или JavaScript
    • @cloudflare/json-schema-apidoc-loader (инструменты схемы JSON), серверная часть для @cloudflare/doca, draft-04, -06, -07 и расширения Doca
  • XSD
    • Oxygen XSD to JSON Schema — создание из файла XSD аналогичной структуры схемы JSON.
    • Плагин XSD to JSON Schema IntellJ — плагин для преобразования файла схемы XML (XSD) в файл схемы JSON.

Тестирование #

  • Питон
    • гипотеза-jsonschema (MPL) draft-07, -06, -04 ; принимает любую схему, даже со сложными и взаимодействующими ограничениями, и возвращает стратегию Hypothesis, которая может генерировать действительные документы для тестирования.

Редакторы #

  • Altova XMLSpy 2019r3 — Графический редактор схемы JSON для draft-06 и draft-7, а также проверка файлов JSON на основе схемы JSON
  • Редактор схемы JSON Dashjoin — Графический онлайн-редактор схемы JSON для проекта-06 (минус oneOf, anyOf, allOf, not). Сгенерированную схему можно сразу протестировать через управляемую ею форму.
  • Студия Хаколейд — Редактор Visual JSON Schema для draft-04, draft-06, draft-07, 2019-09, 2020-12, а также инструмент моделирования данных для баз данных NoSQL, форматов хранения, REST API и JSON в РСУБД. Также конвертирует в и из: различных предварительных спецификаций, DDL, XSD, Swagger, OpenAPI, YAML, Avro, Parquet, Protobuf и большинства синтаксисов сценариев NoSQL. Включает графический интерфейс для диаграмм отношений объектов и интерфейс командной строки.
  • JSONBuddy — Редактор и средство проверки JSON для текста и сетки. Полная среда разработки JSON Schema с анализатором JSON Schema, контекстно-зависимыми помощниками ввода, созданием образцов данных на основе JSON Schema и отладчиком проверки JSON Schema: пройдите процесс проверки и установите контрольные точки. Поддержка драфт-4, драфт-6, драфт-7, 2019-09 и 2020-12.
  • JSONEditor Online — Просмотр, редактирование, форматирование и проверка JSON в Интернете Поддержка черновика 4, черновика 6 и черновика 7.
  • Liquid JSON Schema Editor — Графический редактор схемы JSON для draft-04, draft-06, draft-07 и 2019-09, с разделенным исходным кодом и графическим редактированием. Включает проверку файлов JSON на основе схемы JSON, генератора образцов JSON и генератора документации схемы JSON.
  • Редактор схемы Oxygen JSON — Редактор схемы JSON с различными функциями редактирования и вспомогательными представлениями (Дизайн/Текст/Автор). Поддержка проверки и редактирования черновиков схемы JSON-4, черновик-6 и черновик-7, 2019-09 (частично), 2020-12 (частично). Проверка и редактирование файлов JSON на основе схемы JSON.
  • Perseid Modeler — инструмент моделирования для схемы JSON и OpenAPI. Основные функции включают в себя: визуальное создание схемы JSON с использованием древовидных и ERD-подобных диаграмм, поддержку структур схемы JSON, включая операторы и условия, импорт существующих схем из файлов, создание подробных отчетов HTML, экспорт в PDF, создание сценариев и многое другое. Поддерживаемые версии: черновик 4, 6, 7, 2019 г.-09 и 2020-12
  • Stoplight Studio — JSON Schema IDE (текстовый и графический интерфейс) с поддержкой линтинга JSON/YAML, который также может быть основан на правилах схемы JSON через Spectral. Поддержка черновика-4, черновика-6 и черновика-7.
  • Visual Studio Code — Завершение кода на основе схемы, наведение и проверка для редактирования файлов JSON (включая схемы)
  • WebStorm, IntelliJ IDEA и другие IDE JetBrains — Завершение кода, документация и проверка файлов JSON и YAML с использованием схемы JSON. Поддержка черновика-4, черновика-6 и черновика-7.
  • Eclipse IDE — версия Rich JSON, поддерживающая схему для мгновенной проверки и отчетов об ошибках, завершение, документирование.

Генераторы документации #

  • docusaurus-json-schema-plugin — Средство просмотра схемы. Работает в веб-приложении Docusaurus. Поддерживает черновик 7, 2019-09, черновик 2020-12
  • json-schema-static-docs — создает удобную для человека документацию по уценке из схемы JSON. Включает ссылки между страницами на основе значений $ref. Поддерживает проект-7.
  • jsonschematic — средство просмотра схемы на основе Svelte. Работает как локальное веб-приложение. Поддерживает проект-7.
  • docson — средство просмотра схемы на основе Javascript. Работает как локальное веб-приложение. Поддерживает черновик-4.
  • json-schema-for-humans — создание HTML-представления схемы. На основе Python. Поддерживает проект-7.
  • oXygen JSON Schema Documentation — создание документации по схеме JSON в формате HTML, включая диаграммы.
  • wetzel — генерирует Markdown и AsciiDoc. С некоторыми ограничениями поддерживает черновики-3, черновики-4, черновики-7 и 2020-12.

Репозитории схем #

  • SchemaStore.org — проверка на соответствие общим схемам JSON

Схема линтера #

  • json-schema-linter — Линтинг/проверка/анализ самой json-схемы и поиск опечаток, отсутствующих свойств, отсутствующих необходимых ключей и т.