• python-jsonpath


    json+jsonpath

    一、介绍

      json是文本的文件,有规范的编写格式。

      支持的数据类型:number,bool,str。以及由他们组成的 [] 和 {} 。

      格式:key必须用双引号修饰并且不可以重复

      json在python中一般做dict处理。

      使用:json.load(fp)可以加载json文件,并返回一个dict。

      使用:json.dump(dict())可以将dict()直接写入json文件。

    二、json模块

    1.load和dump

      这两个方法是json文件和dict之间的处理。

      标准格式的json文件:json.load(open('path','r',encoding='utf-8')) -> dict

      dict对象:json.dump(dict(),open('path','w',encoding='utf-8')) -> file写入

    2.loads和dumps

      这两个方法是json str和dict之间的处理。

      dict对象:json.dumps(dict())) -> json str

      json str:json.loads(str(json_str)) -> dict

      说明:json_str必须是符合json格式的字符串。

    3.编码

      json以asscll码解析,中文不在asscll码中,会以unicode编码后,转化为标准json格式。

      encoding参数,json转化为dict时,可以指定编码格式为utf-8,可以正常显示为中文。

      ensure_ascii参数,dict转化为json时,默认为True,以标准的json格式存储(中文转码),需要以中文显示,则设定为False,来正常显示中文。

      通常:操作json。load设定encoding=‘utf-8’即可;dump设定ensure_ascii=False即可。(正常显示中文)

      http请求和响应中的json。使用fiddler抓包,查看raw可以发现,中文已经被转码。fiddler中提供了json方式查看请求内容,可以比较友好的查看json的请求内容(中文显示)

      其它编码问题:unicode编码支持和任何格式的编码转化。遇到两个无法互转的编码时,可以通过unicode作为中转来实现转码。(python中以utf-8编码)

    4.json和dict

      json在python中有两种形式,①满足json格式的字符串,可以转化为json;②dict,可以转换为json。

      json <-> dict 对应关系

    json -> python   python -> json
    json python   python json
    object dict   dict object
    array list   list,tuple array
    string unicode   str,unicode string
    number(int) int,long   int,long,float number
    nuber(real) float   True true
    true True   False false
    false False   None null
    null None      

    5.requests库中的json和dict。

      requests库。

      请求参数:params,data,json。都可以接收参数dict,根据不同的参数,对dict进行不同的处理。如:json参数接收一个dict,处理结果为json_str。

      响应方法:json(),text,content。使用json()方法,python中会接收到一个dict。

      总结:①requests库的json请求参数并不需要使用标准的json格式字符串,直接使用dict即可。②在python中处理传输过程中尽量使用统一的格式。

    7.jsonpath模块

      json在python中以dict形式存在。jsonpath模块的处理对象是json(dict)。

      通常用法:①精确搜索,唯一路径 -> value;②模糊搜索,不唯一路径 -> list(value1,value2,...)

      jsonpath函数/方法:jsonpath.jsonpath(<express>,obj)

      jsonpath的express规则

      json示例:{"key1":1,"key2":2,"key3":{"key31":31,"key32":[321,322,323]}}

    JsonPath 描述 示例
    $ 根节点:{} '$.key1'=[1]
    @ 当期元素(结合条件使用) '$..key32[?(@>321)]'=[322,323]
    . or [] 子节点 '$.key2'=[2]='$[key2]'
    .. 递归所有节点(路径通配) '$.key3..'=所有的元素+元素的元素
    * 元素通配符 '$..key32[*]'=[321,322,323]
    [] 多个节点key  '$..[key1,key2]'=[1,2]
    [,] 多个array节点下标 '$..key32[0,2]'=[321,323]
    [start:end] array片段 '$..key32[:2]'=[321,322]
    [?()] 过滤 [?(@)] 同常这三个一起使用实现条件过滤
    () 表达式计算 ①包含元素[?@.key31]②value条件$.[?@>321]
    n/a 分组,jsonpath不支持 其它:每一步操作都是对前面操作结果的筛选
  • 相关阅读:
    sparksql
    axis2客户端
    windows命令
    如何进行大数据分析及处理(总结)
    linux下如何关闭防火墙?如何查看防火墙当前的状态
    mysql 快速简单安装法
    数据分析笔记
    建设数据仓库的八个步骤
    Java工作记录
    IIS虚拟目录和应用程序
  • 原文地址:https://www.cnblogs.com/bonus_scene/p/13655118.html
Copyright © 2020-2023  润新知