📅  最后修改于: 2023-12-03 15:38:17.255000             🧑  作者: Mango
在 JavaScript 中,JSON(JavaScript Object Notation)是一种用于存储和传输数据的轻量级数据格式。JSON 值通配符使我们能够在 JSON 中搜索或比较进行相应操作。
| 通配符 | 描述 | | ------------ | ------------------------------------------------------------ | | * | 匹配任何值,包括 null、对象、数组或原始数据类型。 | | ** | 匹配任何键或内嵌在多层对象或数组中的值。 | | ? | 匹配任何一个单一字符。 | | {UNIQUE_KEY} | 相当于是一个占位符,在 $filter、$select、$orderby 表达式中用于引用一个特定于查询的类别。 | | _ | 忽略所有的值通配符,并标识所选项为 Optional。 |
以下是一些基本的使用示例。
| 表达式 | 描述 | | ------------------------------------------------- | ------------------------------------------------------------ | | $.store.book[].author | 所有书的作者 | | $..author | 所有的作者 | | $.store. | 所有东西,包括书、电影和音乐 | | $.store..price | 所有价格 | | $..book[2] | 索引从 0 开始,所以这是第三本书 | | $..book[(@.length-1)] | 最后一本书 | | $..book[0,1] | 第一和第二本书 | | $..book[?(@.isbn)] | 所有包含 ISBN 号码的书 | | $..book[?(@.price<10)] | 所有价格小于 10 美元的书 | | $..book[?(@.price<=20 && @.category=="fiction")] | 所有虚构类的且价格小于或等于 20 美元的书 | | $..book[?(@.author =~ /.*REES/i)] | 所有作者名中包含 "REES"(忽略大小写)的书,这里使用了正则表达式 |
以下是使用 JSON 值通配符的示例代码:
const data = {
"books": [
{
"title": "The Great Gatsby",
"author": "F. Scott Fitzgerald"
},
{
"title": "To Kill a Mockingbird",
"author": "Harper Lee"
},
{
"title": "1984",
"author": "George Orwell"
}
]
};
// 匹配所有书的作者
const authors = jsonpath.query(data, '$.books[*].author');
上面的代码使用了jsonpath库来解析 JSON 对象。在查询表达式中使用通配符来匹配所需的书籍作者。
值通配符让我们在编写 JSON 查询表达式时更加灵活。在 JavaScript 中,我们可以使用 jsonpath 库来解析 JSON 对象并使用通配符来查询需要的数据。