aeson-match-qq
声明性JSON匹配器。
动机
在测试大量JSON文档的HTTP服务时,通常很难将整个响应写成期望值。有时,您只关心几个特定属性,或者只是想确保响应具有一定的结构。这个包提供了一个准引用来定义使用变量的声明性匹配器熟悉的语法。
特征
基本JSON构造
由于此套餐的灵感来源于aeson-qq系列,解析器尝试跟踪其行为,并支持简单键和#{经验}
Haskell表达式插值的语法。它目前不支持变量键,但没有添加它们的计划。
数组和对象的扩展式语法
此语法允许您只匹配您关心的结构部分:
[匹配|1,2,3,…]|]
匹配以开头的数组[1, 2, 3]
[match|{foo:1,bar:2,…}|]
匹配的超集对象{foo:1,bar:2}
洞
孔是匹配任何内容的占位符:
[匹配|_|]
匹配任何JSON文档
[匹配|{foo:_}|]
匹配任何具有foo公司
属性。
如果命名了孔,则其值将从比赛
[匹配|{foo:{bar:_n}|]
将返回{编号:4}
如果匹配{foo:{bar:4}}
不区分大小写的字符串
对JSON语法的一个小添加,允许忽略大小写的字符串匹配:
[match|(ci)“foo”|]
匹配任何“傻瓜”
,“免费”
,或“FOO”
.
无序阵列
对JSON语法的一个小添加,允许忽略顺序的数组匹配元素,例如:
[匹配|(无序)[1,2,3]|]
比赛[3, 1, 2]
.