扩展程序

jsonpath-rw-ext的Python项目详细描述


https://travis-ci.org/sileht/python-jsonpath-rw-ext.png?branch=masterLatest VersionDownloads

jsonpath rw的扩展名

json path rw ext通过添加多个扩展扩展扩展了json path rw功能。 “len”,它允许用户获取列表的长度。返回排序版本的“sorted” 允许在元素和之间进行数学运算的“算术”列表。 “filter”只选择列表中的某些元素。

每个扩展将被提议upstream 只有在他们被拒绝的情况下才会留在这里。

快速启动

在命令行:

$ pip install jsonpath-rw-ext

或者,如果安装了virtualenvwrapper:

$ mkvirtualenv jsonpath-rw-ext
$ pip install jsonpath-rw-ext

将jsonpath_rw解析器替换为以下解析器:

import jsonpath_rw_ext
jsonpath_rw_ext.parse("$.foo").find(...)

或:

from jsonpath_rw_ext import parser
parser.ExtentedJsonPathParser().parse("$.foo").find(...)

只获取匹配值的快捷函数:

import jsonpath_rw_ext as jp
print jp.match('$.cow[*]', {'cow': ['foo', 'bar'], 'fish': 'foobar'})
# prints ['foo', 'bar']

print jp.match1('$.cow[*]', {'cow': ['foo', 'bar'], 'fish': 'foobar'})
# prints 'foo'

jsonpath类不是公共api的一部分,因为 可以更改将在上游实现它们的时间。只有语法不应该 改变。

扩展名

nameExample
len
  • $.objects.`len`
sub
  • $.field.`sub(/foo\+(.*)/, \1)`
split
  • $.field.`split(+, 2, -1)`
  • $.field.`split(sep, segement, maxsplit)`
sorted
  • $.objects.`sorted`
  • $.objects[\some_field]
  • $.objects[\some_field,/other_field]
filter
  • $.objects[?(@some_field > 5)]
  • $.objects[?(some_field = “foobar”)]
  • $.objects[?(some_field ~ “regexp”)]
  • $.objects[?(some_field > 5 & other < 2)]
arithmetic (-+*/)
  • $.foo + “_” + $.bar
  • $.foo * 12
  • $.objects[*].cow + $.objects[*].cat

关于算术和字符串

操作是用python运算符完成的,并允许python 如果由于类型不兼容而无法执行操作,则允许并返回[]。

使用运算符时,必须完全定义jsonpath,否则 jsonpath rw ext无法知道表达式是字符串还是jsonpath字段, 在这种情况下,它将选择字符串作为类型。

数据示例:

{
    'cow': 'foo',
    'fish': 'bar'
}
cow+fish返回cowfish
$.cow+$.fish返回foobar
$.cow+“'+$.fish返回foo酒吧
$.cow+“\u”+fish返回foo-fish

关于算术和列表

如果两个列表的大小相同,则可以对它们使用算术运算。

数据示例:

{'objects': [
    {'cow': 2, 'cat': 3},
    {'cow': 4, 'cat': 6}
]}
$.objects[*].cow+$.objects[*].cat返回[6,9]

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

推荐PyPI第三方库


热门话题
javajexcel包装文本问题   EclipseJavaEnum缩进超过左括号。如何让它看起来更正常?   java有办法包含Tomcat 6 catalina。out和localhost。在网络应用的日志文件中记录内容?   java如何永久性地阻止JavaFX代码在eclipse中被突出显示为错误?   如何在java中优化两个for循环(for循环中的for循环)   java如何在我的windows机器上从jar文件创建mac osx的可执行文件   使用记忆化/动态规划的Java组合学   Java中的游荡对象垃圾收集   java为什么我在JSP和JDBC和MySQL中遇到连接失败错误   java轮询Pod的就绪状态   如何创建电子邮件并将其发送到Java中的特定地址?   java如何修复Dagger 2错误“。。。无法提供[…]”?   java Android单选按钮看起来太轻   Android Studio:开发在应用程序之间共享的通用java库