JSON是否有等价的XSLT ?它允许我对JSON进行转换,就像XSLT对XML所做的那样。


当前回答

可以将XSLT与JSON结合使用。 XPath(3.1)、XSLT(3.0)和XQuery(3.1)的Verson 3在某种程度上支持JSON。 这似乎在Saxon的商业版本中可用,并且可能在某个时候包含在HE版本中。 https://www.saxonica.com/html/documentation/functions/fn/parse-json.html

-

我对另一种解决方案的期望是:

我想要能够输入JSON获取一组匹配的数据,并输出JSON或文本。

访问任意属性并计算值

支持条件逻辑

我希望转换脚本来自于工具的外部,基于文本,最好是一种常用的语言。

潜在的替代吗?

我想知道SQL是否是一个合适的选择。 https://learn.microsoft.com/en-us/sql/relational-databases/json/json-data-sql-server

如果替代工具能够处理JSON和XML就太好了 https://learn.microsoft.com/en-us/sql/relational-databases/xml/openxml-sql-server

我还没有尝试将我使用的XSLT脚本转换为SQL,也没有完全评估这个选项,但我希望很快就会研究它。目前只是一些想法。

其他回答

我最近发现了一个我喜欢的JSON样式工具:https://github.com/twigkit/tempo。非常容易使用的工具——在我看来,使用它比使用XSLT容易得多——不需要XPATH查询。

I've been really tired of the enormous amount of JavaScript templating engines out there, and all their inline HTML-templates, different markup styles, etc., and decided to build a small library that enables XSLT formatting for JSON data structures. Not rocket science in any way -- it's just JSON parsed to XML and then formatted with a XSLT document. It's fast too, not as fast as JavaScript template engines in Chrome, but in most other browsers it's at least as fast as the JS engine alternative for larger data structures.

JSON的XSLT等价物——候选工具(工具和规范)列表

工具

1. XSLT

您可以将XSLT用于JSON,目的是实现fn: JSON -to-xml。

本节描述允许使用XSLT处理JSON数据的功能。

2. 金桥

jq就像JSON数据的sed一样——你可以用它来切片、过滤、映射和转换结构化数据,就像sed、awk、grep和其他一些朋友让你处理文本一样简单。 不同操作系统有不同的安装包。

3. jj

JJ是一个命令行实用程序,提供了从JSON文档检索或更新值的快速而简单的方法。它在底层由GJSON和SJSON提供支持。

4. 外汇

命令行JSON处理工具 不需要学习新的语法 纯JavaScript 格式和高亮显示 独立的二进制

5. CsvCruncher

基于sql的命令行表格数据处理工具 不需要学习新的语法 适用于JSON包含具有相似项的大型数组时 支持将多个文档作为多个SQL表处理 用Kotlin编写,在Java上运行 也可以作为Java库在Maven Central存储库中使用

6. jl

jl(“JSON lambda”)是一种用于查询和操作JSON的小型函数式语言。

7. 震动

用Java编写的JSON到JSON转换库,其中转换的“规范”本身就是一个JSON文档。

8. gron

使JSON易于获取! gron将JSON转换为离散的赋值,以便更容易地grep您想要的内容,并查看它的绝对“路径”。它简化了对返回大量JSON但文档糟糕的api的探索。

9. json-e

JSON-e是一个数据结构参数化系统,用于在JSON对象中嵌入上下文。 其核心思想是将数据结构视为“模板”,并使用另一个数据结构作为上下文对其进行转换,以产生输出数据结构。

10. JSLT

JSLT是一种完整的JSON查询和转换语言。语言设计的灵感来自jq、XPath和XQuery。

11. JSONata

JSONata是用于JSON数据的轻量级查询和转换语言。受到XPath 3.1的“位置路径”语义的启发,它允许用紧凑而直观的符号表示复杂的查询。

12. JSONPath多

分析、转换和选择性地从JSON文档(和JavaScript对象)中提取数据。 Jsonpath-plus扩展了原始规范,添加了一些额外的操作符,并显式地显示了原始规范没有阐明的一些行为。

13. 2017年12月1日

提供一种递归的模式匹配方法来转换JSON数据。转换被定义为一组匹配JSON对象结构的规则。当发生匹配时,规则发出转换后的数据,可选地递归转换子对象。

14. 最后提交2018年6月23日

json是一个使用json的快速CLI工具。它是一个单文件node.js脚本,没有外部deps(除了node.js本身)。

15. jsawk最后提交2015年3月4日

Jsawk类似于awk,但用于JSON。您使用从stdin读取的JSON对象数组,使用JavaScript对它们进行过滤,生成输出到stdout的结果数组。

16. 2017年3月13日

测试可以作为文档https://github.com/pasaran/yate/tree/master/tests使用

17. jsonpath-object-transform最后提交2017年1月18日

使用JSONPath从对象文字中提取数据,并基于模板生成一个新对象。

18. 装订最后提交2013年9月16日

Stapling是一个JavaScript库,支持JSON对象的XSLT格式。 与使用JavaScript模板引擎和文本/html模板不同,Stapling让您有机会使用XSLT模板(使用Ajax异步加载,然后在客户端缓存)来解析JSON数据源。

规格:

Json指针

JSON Pointer定义了用于标识特定值的字符串语法 在JavaScript对象表示法(JSON)文档中。

JsonPath

JSONPath表达式总是引用JSON结构,就像XPath表达式与XML文档结合使用一样

JSPath

JSPath for JSON就像XPath for XML。”

JSONiq

JSONiq背后的主要灵感来源是XQuery,到目前为止,它已被证明是一种用于半结构化数据的成功且高效的查询语言

杰梅斯帕斯

JMESPath是一种JSON的查询语言。JMESPath语言是用ABNF语法和完整的规范描述的。

jq——轻量级灵活的命令行JSON处理器

它不像XSLT那样基于模板,但更简洁。例如,将名称和地址字段提取到数组中:[.name, .address]

本教程介绍了一个转换Twitter JSON API的示例(手册中有很多示例)。

CsvCruncher

尽管它的名字并不暗示它,CsvCruncher可以有效地用于读取表格* JSON数据,并使用SQL处理它们。

* Tabular表示JSON树的某些部分是规则的,即一个到多个相同或相似结构的条目。

CsvCruncher将树的这一部分转换为SQL表,然后您就有了完整的SQL语法来查询它。 您还可以加载多个JSON树,然后使用多个表。 您还可以将SQL结果存储为JSON(或CSV),然后再次处理它。

与真正复杂的XSLT方法相比,这种方法对我的帮助更大(尽管当您真正深入了解它时,它非常有趣)。

免责声明:我是CsvCruncher的开发者。