琼浆玉液

JSONata - JSON 数据概述和示例

Florian Zyprian

JSONata是一种强大的数据转换语言,用于转换和查询JSON数据。它为过滤和转换JSON格式的数据提供了一个简单而灵活的语法。本教程涵盖了JSONata的基础知识,展示了如何使用它来操作和查询JSON数据。

什么是JSONata?

JSONata是一种查询和转换语言,用于操作和转换JSON数据。它是由IBM开发的,现在是一个开放源码项目。JSONata提供了一个简单而直观的语法,允许你从JSON文档中提取、过滤和转换数据。

JSONata对于处理复杂的JSON数据结构特别有用,例如那些在网络服务和API中使用的结构。通过JSONata,你可以很容易地从这些结构中提取和转换数据,使你在应用中更容易处理它们。

开始使用JSONata

在我们深入了解JSONata的细节之前,首先让我们看一下如何开始使用。使用JSONata的最简单方法是使用在线JSONata评估器,它允许你试验JSONata表达式并实时查看结果。

要使用在线JSONata评估器,只需导航到以下网址:

https://try.jsonata.org/

一旦你打开了Evaluator,你就可以尝试使用JSONata表达式。Evaluator在左边提供了一个JSON编辑器,你可以输入你的JSON数据,在右边提供了一个JSONata表达式编辑器,你可以输入你的JSONata表达式。

JSONata的基本语法

JSONata表达式由运算符和函数的组合组成,允许你从JSON文档中提取和转换数据。下面是你在使用JSONata时应该遵循的一些基本语法规则:

  • JSONata表达式用大括号{}括起来。
  • JSONata表达式可以包含字面价值,如字符串和数字。
  • JSONata表达式可以包含以$符号开头的变量。
  • JSONata表达式可以包含一些函数,这些函数的名字后面有一系列的括号()。

JSONata函数

JSONata提供了大量的内置函数,你可以用它们来操作和转换JSON数据。下面是一些最常用的函数:

  • $map - 这个函数允许你使用一个特定的表达式来转换一个数组的值。
  • $filter - 这个函数允许你根据一个特定的表达式来过滤一个数组的值。
  • $sort - 这个函数允许你根据一个特定的表达式对一个数组的值进行排序。
  • $reduce - 这个函数允许你使用一个特定的表达式将一个数组的值减少到一个单一的值。
  • $merge - 这个函数允许你将两个或多个对象合并为一个对象。

JSONata 示例

现在你对JSONata的语法和函数有了基本的了解,让我们看看几个例子,看看你如何使用它来操作和转换JSON数据。

示例 1 - 从 JSON 中提取数据

假设你有以下的JSON数据:

{
  },"姓名":"无名氏"、
  "年龄": 30、
  { "email": { "[email protected]"、
  "电话": {
    "家": "555-1234"、
    "工作":"555-5678"
  },
  "地址": {
    "街道": { "123 Main St"、
    "城市": "Anytown"、
    "州": "加州"、
    }, "邮编": "12345"
  }
}

你可以使用以下JSONata表达式来提取姓名、电子邮件地址和电话号码:

{
  "姓名":姓名、
  "email": email、
  "电话": {
    "home": phone.home
  }
}

在上面的例子中,我们使用大括号{}来定义一个有三个属性的新对象:姓名、电子邮件和电话。然后我们使用变量(姓名、电子邮件、电话)从输入的JSON数据中提取相应的值。

注意,我们使用点符号来访问电话和地址对象中的嵌套值。例如,phone.home指的是phone对象中home属性的值。

例2:从JSON中过滤数据 假设你有以下JSON数据,代表一个雇员的列表:

示例 2 - 从 JSON 中筛选数据

假设你有以下JSON数据,代表一个雇员的列表:

[ { "姓名": "John Doe", "年龄": 30, "部门": "销售" }, { "姓名": "Jane Smith", "年龄": 40, "部门": "营销" }, { "姓名": "Bob Johnson", "年龄": 25, "部门": "工程" }]

你可以使用下面的JSONata表达式来过滤员工列表,只包括那些在销售部门工作的员工:

$[部门="销售"]

在上面的表达式中,我们使用过滤函数$来根据一个条件过滤雇员列表。这个条件是用点符号指定的,用来访问部门属性,后面是等号(=)和字符串 "Sales"。

示例 3 - 从 JSON 转换数据

假设你有以下代表产品列表的JSON数据:

[ { "名称": "产品1", "价格": 10 }, { "名称": "产品2", "价格": 20 }, { "名称": "产品3", "价格": 30 }]

你可以使用以下JSONata表达式来转换产品列表并添加一个新的属性

$map($, function($product) {
  $product {
    "priceWithTax": $product.price * 1.1
  }
})

在上面的表达中,我们使用$map函数来转换列表中的每个产品。我们用$符号传递整个产品列表,并使用一个匿名函数来定义每个产品应该如何被转换。

在匿名函数中,我们使用大括号{}来定义一个新的对象,包含产品的现有属性和一个新的属性 "priceWithTax"。我们使用点符号来访问产品的价格属性,并将其乘以1.1来计算含税价格。

Konfuzio文档API和JSONata

Konfuzio Document API 可帮助处理 JSON 和 JSONata 文档,尤其是在分析包含结构化数据的文档(如发票、收据或表格)时。API 可以自动提取这些数据并将其转换为 JSON 格式,然后使用 JSONata 对其进行进一步处理。

使用JSONata和Konfuzio文档API,开发人员可以快速、轻松地从文档中提取、过滤和转换复杂的数据结构,节省时间和精力,提高工作效率。

关于 JSONata 的结论

在本教程中,我们已经介绍了JSONata的基础知识,并向您展示了如何使用它来操作和查询JSON数据。我们研究了JSONata表达式的基本语法和一些最常用的函数。我们还举例说明了如何使用JSONata从JSON文档中提取、过滤和转换数据。

JSONata是一个强大的工具,使你更容易处理复杂的JSON数据结构。使用JSONata,你只需几行代码就可以进行复杂的数据转换。我们希望本教程能帮助你开始使用JSONata,并激励你进一步探索它的可能性。

此外,Konfuzio还可以为您提供 文件API 帮助你编辑和管理JSON和JSONata中的文件。通过API,你可以,例如,将文件转换为JSON,然后使用JSONata查询从其中提取或转换某些数据。这使你能够快速和容易地处理和分析大量的文件。

关于我

更多精彩文章

半结构化数据

半结构化数据:挑战和解决方案

现代企业周围的数据流迅速增长,在这个时代需要定制化的处理策略。除了非结构化格式,...

阅读故事
特征工程机器学习

特征工程:从原始数据到训练集

特征工程可用于为人工智能模型的最有效训练准备数据。为此,我们采用了多种技术,包括...

阅读故事

什么是服务管理?- 框架和最佳实践

服务管理是一个组织的技术能力与人的创造力之间的纽带。服务管理是一种全面的方法...

阅读故事
箭头向上