具有扩展功能的jsonpath

eha-jsonpath的Python项目详细描述


jsonpath扩展

提供新的Extensions to the jsonpath_ng python library以提供通常请求的函数。这些函数的上下文始终是从所提供的jsonpath的解析中提供的值除非显式标记,否则所有函数都将把列表或单个值作为输入处理如果您对函数的意图感到困惑,行为可以查看the tests

用法

fromeha_jsonpathimportparse# The following is pseudocode, don't copy it.obj={'my':'object'}path='$.some.jsonpath.`fn(arg1, arg2)`'matches=parse(path).find(obj)

新扩展名

铸件

尝试对jsonpath表达式的结果应用强制转换。 当路径解析为数组时,将对数组项进行不可见操作。

用法:$.my.path.`cast({castType})`

支持的casttypes和行为:

CASTS={'int':lambdax:_cast_int(x),# see below'boolean':lambdax:bool(x),'string':lambdax:str(x),'float':lambdax:float(x),'json':lambdax:json.loads(x),# standard json library'none':lambdax:x,'null':lambdax:None}def_cast_int(obj):# fixes issues when trying to cast a float str -> int# int('1.09') throws ValueErrortry:returnint(obj)exceptValueError:returnint(float(obj))

拆分列表

获取给定jsonpath处的字符串,并尝试将其拆分为给定的delimiter数组,然后将数组项强制转换为特定的castType。请参见“强制转换”部分中的有效强制转换。

解析路径必须是字符串。在路径解析为数组的情况下,不会对数组项进行虚拟操作。

用法:$.my.path.`splitlist({delimiter}, {castType})`

匹配

根据提供的match_term检查在jsonpath中找到的值。如果未找到该值,则返回null_value。当路径解析为数组时,将对数组项进行不可见操作。

用法:$.my.path.`match({match_term}, {null_value})`

需要逗号后有空格!

行为:

result=(value==match_term)ifvalue!=Noneelsenull_value

不匹配

提供匹配的相反项。根据提供的match_term检查在jsonpath中找到的值。如果未找到该值,则返回null_value。当路径解析为数组时,将对数组项进行不可见操作。

用法:$.my.path.`notmatch({match_term}, {null_value})`

需要逗号后有空格!

行为:

result=(value!=match_term)ifvalue!=Noneelsenull_value

分析日期时间

尝试从给定jsonpath中找到的字符串分析iso格式的datetime然后返回由python数组片指定的已分析日期时间的一部分或全部。当路径解析为数组时,将对数组项进行不可见操作。strptime_str格式取自python strptime behaviorreturn_slice中使用的数组切片表示法使用标准的slice operator,使用分号分隔的参数,如:

defargs_to_slice(cls,return_slice,obj):defaults=[0,None,None]parts=[]forx,iinenumerate(return_slice.split(':')):try:parts.append(int(i))exceptValueError:parts.append(defaults[x])returnobj[slice(*parts)]

用法:$.my.path.`datetime({strptime_str}, {return_slice})`

需要逗号后有空格!

散列

返回添加到提供的salt中的解析jsonpath值的128位十六进制MD5哈希。这对于从一条源信息以及一些惟一的salt生成UUID兼容值非常有用这允许非uuid外键每次都可靠地转换为相同的uuid兼容值。当路径解析为数组时,将对数组项进行不可见操作。

用法:$.my.path.`hash({salt})`

模板

将在解析的jsonpath中找到的值替换为带单个替换占位符的格式化字符串。当路径解析为数组时,将对数组项进行不可见操作。

用法: 格式的使用类似于:my name is {}

$.my.path.`template({template_format)`

值替换

将匹配match_value的解析值替换为replacement_value。当路径解析为数组时,将对数组项进行不可见操作。

用法:$.my.path.`valuereplace({match_value}, {replacement_value})`

需要逗号后有空格!

行为:

replacement_valueif(match_value==value)elsevalue

字典替换

将与传递的字典中的键匹配的解析值替换为来自同一字典的相应值。当路径解析为数组时,将对数组项进行不可见操作。dictionary参数应该是一个字符串化的python字典。

用法:$.my.path.`dictionaryreplace({stringified_python_dictionary})` 结果是:在字典中,路径值替换为匹配键的值

{em1}$行为:

(每)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Clojure关键字在内存中的大小是多少?   Java中有固定长度的通用数组对象吗?   PostgreSQL:通过Java更新我的用户表   错误:使用java解析xml   java Json显示列表中对象的名称   java比较JodaTime时区   与JAVA中的API和包的区别?   java的int值在for循环中不改变   谷歌应用引擎中的java RSA   迁移到spring 5后出现java非法字符错误   java Websphere管理控制台不工作   JavaGSON如何始终在json中包含毫秒?   带有空格和双引号的windows Java ProcessBuilder命令参数失败   java错误:重复的zip条目[43.jar:org/apache/http/annotation/NotThreadSafe.class]