从JSON或JSON行形式的数据开始,我想使用结构模式匹配对其运行查询。
例如,在运行json.load()后,我得到一个结构如下的判决:
publications = {
'location': 'central library',
'items': [
{'kind': 'book', 'title': 'Python in Aviation'},
{'kind': 'magazine', 'title': 'Flying Monthly', 'issues': 15},
{'kind': 'book', 'title': 'Python for Rock Climbers'},
{'kind': 'magazine', 'title': 'Weekly Climber', 'issues': 42},
]
}
我想做的是应用Python 3.10的结构模式匹配提取相关数据,就像我使用这个SQL查询一样:
SELECT title, issues FROM Publications WHERE kind = "magazine";
解决方案的关键是应用映射模式。根据PEP 634,它们具有以下形式:
mapping_pattern: '{' [items_pattern] '}'
items_pattern: ','.key_value_pattern+ ','?
key_value_pattern:
| (literal_pattern | value_pattern) ':' pattern
| double_star_pattern
double_star_pattern: '**' capture_pattern
在日常语言中,这意味着“用花括号编写字典,为您要匹配的值输入常量,并为您要提取的字段输入变量。”
使用问题中提供的数据,下面是如何转换请求的SQL查询:
for item in publications['items']:
match item:
case {'kind': 'magazine', 'title': title, 'issues': issues}:
print(f'{title} has {issues} issues on hand')
这会过滤项目以仅包含杂志。然后它提取标题并发布字段。这输出:
Flying Monthly has 15 issues on hand
Weekly Climber has 42 issues on hand
问题内容: 有什么有效的方法来连接JSON数据吗?假设我们有两个JSON数据集: 我想将其转换为以下客户端: 请记住,这里将有成千上万条包含更为复杂的数据结构的记录。jQuery和香草javascript都很好。还请记住,可能会有没有水果的颜色和没有颜色的水果。 注意:为了简单起见,假设两个数据集的顺序相同,但是第二个数据集可能有间隔。 问题答案: 没有直接的方法,但是您可以编写逻辑来获得这样的组
我不知道如何正确设置超架构以使用json架构验证器。我使用的是json模式验证器的java版本,版本是2.2.5。 我的模式是: 我的 json 对象是: 现在,当我将模式加载到并打算开始验证时,我得到以下警告: 除了$Schema字段之外,还有什么要配置以使用超模式的吗?
我正在尝试验证具有可选键的复杂JSON 下面是完整的可执行特性文件 我想验证ValidJsonSchema,但无法绕过完整的模式匹配 当我尝试匹配可选字段时,我一直得到错误为 com.intuit.karate.exception.karateException:应在路径$中找到属性为[“MyArray”]的对象,但发现了“net.minidev.json.JsonArray”。根据JSONPro
我试图使用另一个JSON模式来验证JSON模式。 要验证的JSON模式示例:https://jsonschema.net/home 验证上述模式的验证模式参考:https://github.com/ajv-validator/ajv/blob/master/lib/refs/json-schema-draft-07.json 从上面的中,如果我删除,我的JSON将变得无效。 我有什么方法可以定义根
问题内容: 我已经在线阅读了文档和各种教程,但是我对regex在Java中的工作方式仍然感到困惑。我正在尝试做的是创建一个接受字符串类型参数的函数。然后,我想检查传递的字符串是否包含MDCLXVIivxlcdm以外的任何字符。因此,例如,字符串“ XMLVID”应返回false,而“ ABXMLVA”应返回true。 当我通过时,“ XMLIVD”,“ ABXMLVA”和“ XMLABCIX”
我对文档模式的定义如下: