XSLT эквивалент для JSON


Answers

Попробуйте JOLT . Это библиотека преобразования JSON для JSON, написанная на Java.

Он был создан специально, потому что мы не хотели играть в игру JSON -> XML -> XSLT -> XML -> JSON, а использование шаблона для любого достаточно сложного преобразования недостижимо.

Question

Существует ли эквивалент XSLT для JSON? Что-то, что позволяет мне делать преобразования на JSON, например XSLT, для XML.




Возможно использование XSLT с JSON. Verson 3 из XPath (3.1) XSLT (3.0) и XQuery (3.1) каким-то образом поддерживает JSON. Это, похоже, доступно в коммерческой версии Saxon, и в какой-то момент может быть включено в версию HE. https://www.saxonica.com/html/documentation/functions/fn/parse-json.html

-

Что я ожидаю от альтернативного решения:

Я хотел бы иметь возможность ввода JSON для получения соответствующего набора данных и вывода JSON или TEXT.

Доступ к произвольным свойствам и оценка значений

Поддержка условной логики

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

Возможная альтернатива?

Интересно, может ли SQL быть подходящей альтернативой. https://docs.microsoft.com/en-us/sql/relational-databases/json/json-data-sql-server

Было бы неплохо, если бы альтернативный инструмент мог обрабатывать JSON и XML https://docs.microsoft.com/en-us/sql/relational-databases/xml/openxml-sql-server

Я еще не пытался преобразовать скрипты XSLT, которые я использую в SQL, или полностью оценил этот вариант, но я надеюсь посмотреть на него в ближайшее время. Только некоторые мысли до сих пор.




Почему бы вам не преобразовать JSON в XML с помощью Mr. Data Coverter , преобразовать его с помощью XSLT и затем сменить его обратно на JSON, используя то же самое.




Я использую маршрут Camel umarshal (xmljson) -> to (xlst) -> marshal (xmljson). Достаточно эффективный (хотя и не 100% идеальный), но простой, если вы уже используете Camel.




Я написал адаптер dom для моей json-обработки, основанной на jsonson, давным-давно. Он использует библиотеку nu.xom. Полученное дерево dom работает с возможностями java xpath и xslt. Я сделал некоторые варианты реализации, которые довольно просты. Например, корневой узел всегда называется «root», массивы переходят в узел ol с подчиненными элементами li (например, в html), а все остальное является только узлом с примитивным значением или другим узлом объекта.

JsonXmlConverter.java

Использование: JsonObject sampleJson = sampleJson(); org.w3c.dom.Document domNode = JsonXmlConverter.getW3cDocument(sampleJson, "root"); JsonObject sampleJson = sampleJson(); org.w3c.dom.Document domNode = JsonXmlConverter.getW3cDocument(sampleJson, "root");




очень удобно конвертировать JSON с помощью XSLT: вам нужен десериализатор JSON2SAX и сериализатор SAX2JSON.

Пример кода в Java: http://www.gerixsoft.com/blog/json/xslt4json







Еще один новый ответ на старый вопрос, я бы предложил посмотреть на DefiantJS . Это не эквивалент XSLT для JSON, это XSLT для JSON. Раздел «Templating» документации включает в себя этот пример:

<!-- Defiant template -->
<script type="defiant/xsl-template">
    <xsl:template name="books_template">
        <xsl:for-each select="//movie">
            <xsl:value-of select="title"/><br/>
        </xsl:for-each>
    </xsl:template>
</script>

<script type="text/javascript">

var data = {
        "movie": [
            {"title": "The Usual Suspects"},
            {"title": "Pulp Fiction"},
            {"title": "Independence Day"}
        ]
    },
    htm = Defiant.render('books_template', data);

console.log(htm);
// The Usual Suspects<br>
// Pulp Fiction<br>
// Independence Day<br>



Говорить, что недостаток инструментов предполагает отсутствие необходимости, это просто вопрос вопроса. То же самое можно было бы применить для поддержки X или Y в Linux (зачем беспокоиться о разработке качественных драйверов и / или игр для такой ОС меньшинства? И зачем обращать внимание на ОС, для которых не разрабатываются крупные игровые и аппаратные компании?). Вероятно, люди, которым нужно будет использовать XSLT и JSON, в конечном итоге используют несколько тривиальный обходной путь: преобразование JSON в XML. Но это не оптимальное решение, не так ли?

Когда у вас есть родной формат JSON и вы хотите отредактировать его «wysywyg» в браузере, XSLT будет более чем адекватным решением проблемы. Выполнение этого с помощью обычного javascript-программирования может стать болью в заднице.

Фактически, я применил подход XSLT «каменный возраст», используя синтаксический анализ подстроки, чтобы интерпретировать некоторые базовые команды для javascript, например, вызвать шаблон, обработать дочерние элементы и т. Д. Конечно, реализация механизма преобразования с объектом JSON намного проще, чем реализуя полноценный XML-синтаксический анализатор для анализа XSLT. Проблема в том, что для использования шаблонов XML для преобразования объекта JSON необходимо проанализировать XML шаблонов.

Чтобы преобразовать объект JSON с XML (или HTML, или текст или что-то еще), вам нужно тщательно подумать о синтаксисе и о том, какие специальные символы вам нужно использовать для идентификации команд преобразования. В противном случае вам придется разработать парсер для собственного пользовательского языка шаблонов. Пройдя этот путь, я могу сказать, что это некрасиво.

Обновление (12 ноября 2010 г.): после нескольких недель работы над моим парсером я смог оптимизировать его. Шаблоны анализируются заранее, а команды хранятся как объекты JSON. Правила преобразования также являются объектами JSON, а код шаблона - это сочетание HTML и синтаксиса homebrew, аналогичного коду оболочки. Я смог преобразовать сложный документ JSON в HTML, чтобы сделать редактор документов. Код составляет около 1 тыс. Строк для редактора (это для частного проекта, поэтому я не могу его разделить) и около 990 строк для кода преобразования JSON (включает в себя команды итерации, простые сравнения, вызов шаблонов, сохранение переменных и оценку). Я планирую выпустить его под лицензией MIT. Бросьте мне письмо, если вы хотите принять участие.







XSLT эквиваленты для JSON - список кандидатов

  1. http://www.w3.org/TR/xslt-30/#json

    Вы можете использовать http://www.w3.org/TR/xslt-30/#json с целью fn:json-to-xml .

    В этом разделе описываются средства, позволяющие обрабатывать данные JSON с использованием XSLT.

  2. jq

    jq подобен sed для данных JSON - вы можете использовать его для среза и фильтрации, а также для преобразования и преобразования структурированных данных с той же легкостью, что sed, awk, grep и friends позволяют вам играть с текстом. Существуют пакеты установки для разных ОС.

  3. jj

    JJ - это утилита командной строки, которая обеспечивает быстрый и простой способ получения или обновления значений из документов JSON. Он работает от GJSON и SJSON под капотом.

  4. fx

    Инструмент обработки JSON командной строки

    • Не нужно изучать новый синтаксис
    • Обычный JavaScript
    • Форматирование и выделение
    • Автономный бинарный
  5. jsawk

    Jsawk похож на awk, но для JSON. Вы работаете с массивом объектов JSON, считанных с stdin, фильтруйте их с помощью JavaScript для создания массива результатов, который печатается в stdout.

  6. json

    json - быстрый инструмент CLI для работы с JSON. Это однофайловый скрипт node.js без внешних отведений (кроме самого node.js).

  7. jl

    jl («JSON lambda») - это крошечный функциональный язык для запросов и управления JSON.

  8. yate

    Тесты могут быть использованы в качестве документа https://github.com/pasaran/yate/tree/master/tests

  9. https://github.com/ColinEberhardt/json-transforms

    Обеспечивает рекурсивный подход к сопоставлению шаблонов для преобразования данных JSON.

  10. jsonpath-object-transform

    Вытягивает данные из литерала объекта с помощью JSONPath и генерирует новые объекты на основе шаблона.

  11. JOLT

    Библиотека JSON для JSON, написанная на Java, где «спецификация» для преобразования сама является документом JSON.

  12. JSONiq

    Основным источником вдохновения для JSONiq является XQuery, который до сих пор доказал успешный и продуктивный язык запросов для полуструктурированных данных

  13. gron

    Сделайте JSON greppable! gron преобразует JSON в дискретные назначения, чтобы облегчить grep для того, что вы хотите, и увидеть абсолютный «путь» к нему. Это облегчает исследование API, которые возвращают большие капли JSON, но имеют ужасную документацию.

Смотрите также:




Related