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

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第三方库

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值