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

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

370 голосов
/ 24 октября 2009

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

Ответы [ 24 ]

9 голосов
/ 21 января 2016

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

<!-- 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>
5 голосов
/ 10 мая 2012

Я действительно устал от огромного количества шаблонизаторов JavaScript и всех их встроенных HTML-шаблонов, различных стилей разметки и т. Д., И решил создать небольшую библиотеку , которая позволяет XSLT-форматирование для структур данных JSON. В любом случае это не ракетостроение - это просто JSON, анализируемый в XML, а затем отформатированный с помощью документа XSLT. Это также быстро, не так быстро, как движки шаблонов JavaScript в Chrome, но в большинстве других браузеров это по крайней мере так же быстро, как альтернатива движку JS для больших структур данных.

3 голосов
/ 31 июля 2014

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

3 голосов
/ 21 июля 2014

JSONiq - это такой стандарт, а Zorba - реализация C ++ с открытым исходным кодом. JSONiq также можно рассматривать как XQuery с добавлением JSON как собственного типа данных.

2 голосов
/ 22 марта 2017

Yate (https://github.com/pasaran/yate) специально разработан после XSLT, имеет JPath (естественный эквивалент XPath для JS), компилируется в JavaScript и имеет довольно богатую историю использования. Он практически не документирован, но читает примеры и тесты должно быть достаточно.

2 голосов
/ 20 февраля 2012

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

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

1 голос
/ 12 октября 2018

JSLT очень близко к JSON-эквиваленту XSLT. Это язык преобразования, где вы пишете фиксированную часть вывода в синтаксисе JSON, а затем вставляете выражения для вычисления значений, которые вы хотите вставить в шаблон.

Пример:

{
  "time": round(parse-time(.published, "yyyy-MM-dd'T'HH:mm:ssX") * 1000),
  "device_manufacturer": .device.manufacturer,
  "device_model": .device.model,
  "language": .device.acceptLanguage
}

Он реализован на Java поверх Джексона.

0 голосов
/ 29 апреля 2018

JSON-e имеет реализации в Node.js, Python и Go.

0 голосов
/ 02 декабря 2014

Работающий рисунок / подтверждение концепции подхода к использованию чистого JavaScript вместе со знакомым и декларативным шаблоном, лежащим в основе соответствующих выражений XSLT и рекурсивных шаблонов, см. https://gist.github.com/brettz9/0e661b3093764f496e36

(Аналогичный подход может быть использован для JSON.)

Обратите внимание, что для удобства демонстрации шаблонов в Firefox демо-версия также использует закрытие выражений JavaScript 1.8 (по крайней мере, пока не будет реализована краткая форма ES6 для методов).

Отказ от ответственности: это мой собственный код.

0 голосов
/ 01 января 2013

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...