py jsonq

py jsonq是一个简单、优雅的python包,可以查询任何类型的json数据。通过在json上提供类似orm的查询,这将使您的生活更轻松。

安装pip install pyjsonq

用法

只需在开始使用前导入软件包即可。

作为python包:frompyjsonqimportJsonQ

通过从文件导入json数据,您可以立即开始使用此包:JsonQ('data.json')

或JsonQ(data={"id":1,"name":"shaonty"})# must assign data if you want to pass data instead of file_path

您可以使用各种查询方法开始查询数据,例如where、or_where、where_in、where_not_in、where_start_with、where_ends_with、where_contains等等。此外,您还可以使用总和、计数、分组、排序、最大值、最小值等来聚合查询后的数据。

让我们看一个简单的例子:# sample Json datajson_object={products:[{id:1,city:'bsl',name:'iPhone',cat:1,price:80000.5},{id:2,city:null,name:'macbook pro',cat:1,price:150000},{id:3,city:'dhk',name:'Redmi 3S Prime',cat:2,price:12000},{id:4,city:'bsl',name:'macbook air',cat:2,price:110000}]};qe=JsonQ(file_path)res=qe.at('products').where('cat','=',2).get()print(res)"""This will print[{id: 3,city: 'dhk',name: 'Redmi 3S Prime',cat: 2,price: 12000},{id: 4,city: 'bsl',name: 'macbook air',cat: 2,price: 110000}]"""

假设我们想得到查询结果的价格总和。我们可以通过调用sum()方法而不是get():res=qe.at('products').where('cat','=',2).sum('price')print(res)"""It will print:122000"""

让我们探索完整的api,看看这个库还能为您带来什么魔力。

让我们?

API

下面的api示例基于这里给出的示例json数据。要更好地了解这些示例,请先查看json数据。每个api的详细示例也可以在这里找到。

API列表:

get()

此方法将执行查询并返回结果数据。在使用了一些查询方法之后,您需要最终调用它。详细信息可在其他API示例中找到。

来自文件(文件路径)

此方法是set json文件路径的替代方法。详细信息可在其他API示例中找到。

示例:

假设您有一个名为data.json的文件。您可以这样设置路径:qu=JsonQ().from_file('data.json').at('users').where('id','=',1).get()

位于(路径)路径--要开始查询的数据的路径层次结构。

默认情况下,查询将从给定的json数据的根开始。我如果要首先从要开始查询的位置移动到数据的嵌套路径层次结构,请使用此方法。跳过路径参数或指定'。作为参数也将从根数据开始查询。

示例:

假设您希望开始查询json数据的'users'属性的值。你可以这样做:qu=JsonQ(file_path).at('users').where('id','=',1).get()

如果您想深入层次结构,可以这样做:qe=JsonQ(file_path).at('users.5.visits').where('year','=',2011).get()

请参见此处的详细示例。

位置(键、运算符、值)键--数据的属性名。或者您可以在这里传递一个函数,在其中对多个查询进行分组。请参见示例中的详细信息

值--要匹配的值。它可以是一个int,string,bool甚至float——这取决于运算符

运算符--用于匹配的操作数。可以使用以下操作数:=:用于相等匹配

eq:与=相同

< L> >代码>!=:对于弱不相等匹配

neq:与相同!=

&gt;:检查数据中给定键的值是否大于值

gt:与&gt;相同

&lt;:检查数据中给定键的值是否小于值

lt:与&lt;相同

&gt;=:检查数据中给定的键的值是否大于或等于值

gte:与&gt;=相同

&lt;=:检查数据中给定的键的值是否小于或等于值

lte:与&lt;=相同

null:检查数据中给定键的值是否为null(value对于此运算符,可以省略where()中的参数value)

not null:检查数据中给定的键的值是否为notnull(value对于此运算符,可以省略where()中的参数value)

在中:检查数据中给定的键的值是否存在于给定的值中。值应该是一个简单的列表

not in:检查给定值val中是否不存在数据中给定键的值。val应该是一个简单的列表

starts with:检查数据中给定的键的值是否以给定的值开头(前缀为)。这只适用于字符串类型数据。

ends with:检查数据中给定的键的值是否以给定的值结尾(后缀为)。这只适用于字符串类型数据。

包含:与中的相同

示例:

假设您希望找到具有idof1的'用户'。你可以这样做:qu=JsonQ(file_path).at('users').where('id','=',1).get()

您可以在其中添加多个条件。它将在这些多个where条件之间通过和ing给出结果。pip install pyjsonq1

请参见此处的详细示例。

或_where(键、运算符、值)

或_where()的参数与where()的参数相同。where()与或_where()之间的唯一区别是:条件由或_where()方法将在其他条件下处理结果。

例如,如果要查找具有idof1或2的用户,可以这样做:pip install pyjsonq2

请参见此处的详细示例

输入位置(键,值)键--数据的属性名

值--它应该是一个列表

此方法的行为类似于where(key,'in',value)方法调用。

不在的位置(键,值)键--数据的属性名

值--它应该是一个列表

此方法的行为类似于where(key,'notin',value)方法调用。

其中为空(键)键--数据的属性名

此方法的行为类似于where(key,'=','none')方法调用。

其中不为空(键)键--数据的属性名

此方法的行为类似于where(key,'!=','无')方法调用。

以(键、值)开头的位置

键--数据的属性名

值--应该是字符串

此方法的行为类似于where(key,'startswith',value)方法调用。

以(键、值)结尾的位置

键--数据的属性名

值--应该是字符串

此方法的行为类似于where(key,'endswith',value)方法调用。

U包含的位置(键,VAL)键--数据的属性名

值--应该是字符串或列表

此方法的行为类似于where(key,'contains',val)方法调用。

总和(属性)属性--数据的属性名

示例:

假设您希望找到'products'的'price'之和。你可以这样做:pip install pyjsonq3

如果要聚合的数据是纯列表,则不需要传递"property"参数。

请参见此处的详细示例

count()

它将返回集合中的元素数。

示例:

假设您想查找'products'属性中有多少元素。你可以这样做:pip install pyjsonq4

请参见此处的详细示例

大小()

这是count()的别名方法

max(属性)属性--数据的属性名

示例:

假设您希望找到'products'的'price'的最大值。你可以这样做:pip install pyjsonq5

如果要查询的数据是纯数组,则不需要传递"property"参数。

请参见此处的详细示例

min(属性)属性--数据的属性名

示例:

假设您希望找到'products'中'price'的最小值。你可以这样做:pip install pyjsonq6

如果要查询的数据是纯数组,则不需要传递"property"参数。

请参见此处的详细示例

平均值(属性)属性--数据的属性名

示例:

假设你想找出t的平均价格他说"产品"。你可以这样做:pip install pyjsonq7

如果要查询的数据是纯数组,则不需要传递"property"参数。

请参见此处的详细示例

first()

它将返回集合的第一个元素。

示例:pip install pyjsonq8

请参见此处的详细示例

last()

它将返回集合的最后一个元素。

示例:pip install pyjsonq9

请参见此处的详细示例

nth(索引)索引--要返回的元素的索引。

它将返回集合的第n个(n从0开始)元素。如果给定的索引是一个正的值,它将从头返回第n个元素。如果给定的索引是一个负值,它将从末尾返回第n个元素。

示例:frompyjsonqimportJsonQ0

请参见此处的详细示例

分组依据(属性)属性--要按其对集合进行分组的属性。

示例:

假设您希望基于'location'属性对'users'数据进行分组。你可以这样做:frompyjsonqimportJsonQ1

请参见此处的详细示例

排序(顺序)顺序--如果跳过'order'属性,默认情况下,数据将按升序排序。您需要将'desc'作为'order'参数传递,以便按降序对数据进行排序。此外,您还可以在'order'参数中传递一个比较函数,以定义您自己的逻辑来对数据进行排序。

注意:此方法应用于普通数组。如果要对对象数组进行排序,则应使用稍后介绍的sortby()方法。

示例:

假设您想对'arr'数据进行排序。你可以这样做:frompyjsonqimportJsonQ2

请参见此处的详细示例

按(属性、顺序)排序

属性--您需要传递进行排序的属性名。

顺序--如果跳过'order'属性,默认情况下,数据将按升序排序。您需要将'desc'作为'order'参数传递,以便按降序对数据进行排序。此外,您还可以在'order'参数中传递一个比较函数,以定义您自己的逻辑来对数据进行排序。

注意:此方法应用于对象数组。如果要对普通数组进行排序,应使用前面介绍的sort()方法。

示例:

假设您想对'products'的'price'数据进行排序。你可以这样做:frompyjsonqimportJsonQ3

请参见此处的详细示例

重置(数据)数据--可以是json文件路径、json字符串或json对象。如果在data参数中没有传递数据,则jsonq对象实例将重置为以前初始化的数据。

在任何时候,您都可能希望将对象实例重置为完全不同的数据集,然后对其进行查询。在这种情况下,您可以使用这种方法。

请参见此处的详细示例

clone()

它将返回对象实例的完整克隆。

请参见此处的详细示例

块(大小)

在将特定大小的数组分块后,它将返回一个完整的新数组。

请参见此处的详细示例。

错误和问题

如果您遇到任何错误或问题,请随时打开

Github

学分

特别感谢nahid bin azhar为本套餐提供的灵感和指导。

其他平台

欢迎加入QQ群-->: 979659372

推荐PyPI第三方库

qpython能使用json吗l_Python pyjsonq包_程序模块 - PyPI - Python中文网相关推荐

  1. python eel_Python django-eel包_程序模块 - PyPI - Python中文网

    黄鳝 django eel是一个用于html gui应用程序的django应用程序,具有简单的python/js互操作.它是Eel的移植版本. 回购分行master:django鳗鱼的master分支 ...

  2. python renamer模块_Python smart-image-renamer包_程序模块 - PyPI - Python中文网

    使用包含在中的exif数据智能地批量重命名图像的脚本 安装 要安装智能图像重命名程序: 推荐的方法是通过pip.pip install smart-image-renamer 否则像其他python包 ...

  3. python json模块下载_Python ijson包_程序模块 - PyPI - Python中文网

    使用量 所有使用示例都将使用描述地理位置的json文档 对象:{ "earth": { "europe": [ {"name": " ...

  4. mysql金库模式_Python vault-anyconfig包_程序模块 - PyPI - Python中文网

    vaultanyconfig " rel="nofollow"> 使用加载和转储功能扩展hvac hashicorp vault客户端任何配置.这允许自动混合来自保 ...

  5. python queue模块安装_Python queue包_程序模块 - PyPI - Python中文网

    沃特?另一个消息队列? 考虑到消息队列的激增,人们可能倾向于相信 发明更多不是答案.使用现有的解决方案是 多次尝试与大多数现有的消息队列产品. 其他的失败(对于我们的用例). queuey是用来处理大 ...

  6. python ssh登陆模块_Python sshh包_程序模块 - PyPI - Python中文网

    sshh是一个ssh帮助工具,用于在ssh代理中批量注册ssh私钥. sshh的主要目的是避免在 在ssh代理中注册的密钥数超过一定数量.当 当服务器设置私钥上限时,超过了密钥尝试的上限 严格的尝试. ...

  7. python迅雷sdk_Python anthunder包_程序模块 - PyPI - Python中文网

    安敦达(又名沙发螺栓Python) anthunder(ant thunder)是一个用python编写的沙发螺栓库. 它支持通过"sofa bolt+protobuf"协议调用r ...

  8. python settings模块安装_Python settings-helper包_程序模块 - PyPI - Python中文网

    在包中设置 在的模块目录中创建默认的/samplesettings.ini文件 您的包,带有一个[default]节和任何其他[sections] 您需要(即应用程序环境)[default] some ...

  9. python怎么画图片 wafer map_Python wafer_map包_程序模块 - PyPI - Python中文网

    晶圆图 绘制一张晶圆图.用于半导体加工和分析. 内容安装 用法键盘快捷键和鼠标用法rel="nofollow">键盘快捷键和鼠标用法 注意事项当前能力 更改日志 功能鼠标和键 ...

最新文章

  1. 联想一体计算机排行,2019最具性价比一体机推荐 电脑一体机十大最新排名
  2. 数字资产云交易所搭建开发平台,云交易的优势在哪?
  3. delphi listview 获取行高_《我的侠客》布料怎么获得 布料获取方法
  4. 微信支付分-支付失败原因总结
  5. 超简单的Tomcat安装过程
  6. MTK 驱动(58)---MTK G-sensor
  7. 自定义UITabBar
  8. Safari 最新技术预览版来啦,为开发者带来了哪些新功能?
  9. Reading Digits(2016southeastern Europe. D题)题解
  10. 新入手了台IBM Thinkpad T60笔记本 重装系统
  11. 计算机添加usb网络打印机,电脑USB连接打印机怎么共享给别的电脑?
  12. android 设备指纹,浅谈Android 指纹解锁技术
  13. win10内置录音机无法录制网页视频声音
  14. dz程序上传服务器的位置,dz手机端上传到远程服务器
  15. 又一篇Android Recovery的文章
  16. IEEE754浮点数标准
  17. 怎样用Excel搜索表格内的内容?
  18. 亚博智能PS2手柄学习笔记
  19. 为什么JS的语法很乱
  20. Linux操作系统下/etc/hosts文件配置方法(域名映射)

热门文章

  1. 个人站长的廉价劳动力
  2. 一段php代码,请问一段PHP代码是什么意思?
  3. excel导入mysql数据库方法(最新,2016年2月19日)
  4. 莱佛士毕业生 Amos YEO与快餐巨头KFC街头服饰合作系列
  5. BUC算法及其Python实现
  6. 经济学模型1-循环流向图
  7. 软件工程师杰夫的个人营销实例(十分钟看完系列)
  8. 【JQuery】学习
  9. 001,雪景拍摄技巧
  10. 数学和英语不好,能当程序员吗?