文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

4个小窍门,让你在Python中高效使用JSON

2024-12-24 15:19

关注

字典和列表是 Python的两种数据类型,也是用来处理JSON的完美工具。本文将主要分享以下内容:

[[341838]]

1. JSON解码

Python自带一个功能强大、内容丰富的JSON库。可通过以下方式导入:

  1. import json 

解码JSON字符串很简单,直接输入 json.loads(…) 即可。它可以转换成:

以下为json.loads 的一个实例:

  1. >>> import json 
  2. >>> jsonstring = '{"name": "erik","age": 38, "married": true}' 
  3. >>> json.loads(jsonstring){'name': 'erik', 'age': 38, 'married': True} 

2. JSON编码

编码JSON也很简单。使用json.dumps(…) 把由字典、列表和其他本机类型组成的Python对象转换为字符串:

  1. >>> myjson = {'name': 'erik', 'age': 38, 'married': True} 
  2. >>> json.dumps(myjson)'{"name": "erik", "age": 38, "married":true}' 

这其实是一个完全相同的文档,只是被转换成了字符串。所以,要想让JSON文档更易读,可使用缩进选项:

  1. >>> print(json.dumps(myjson, indent=2)) 
  2.   "name": "erik", 
  3.   "age": 38, 
  4.   "married": true 

3. 命令行用法

JSON库也可从命令行使用,以校验、优化JSON:

  1. $ echo "{ \"name\": \"Monty\", \"age\":45 }" | \ 
  2. python3 -m json.tool 
  3.     "name": "Monty", 
  4.     "age": 45 

如果你的电脑系统是Mac或Linux,并且能够安装JSON库的话,那么你也可以研究一下jq 命令行工具。它除了有便于记忆,可以润色代码等优点外,还有许多其他特点。

jq将在默认情况下优化JSON

4. 使用JMESPath搜索JSON

JMESPath是一种JSON查询语言。它能够让你轻松地从JSON文档中获取所需数据。如果你用过JSON,就会觉得获取嵌套值并不难。

例:doc["person"]["age"]将在一个如下所示的文档中获取age的嵌套值:

  1.   "persons": { 
  2.     "name": "erik", 
  3.     "age": "38" 
  4.   }} 

但如果是像下面这样的文档,该如何从这一组人名中提取所有年龄字段呢?

  1.   "persons": [ 
  2.     { "name": "erik","age": 38 }, 
  3.     { "name": "john","age": 45 }, 
  4.     { "name": "rob","age": 14 } 
  5.   ]} 

我们可以简单地写一套关于这些人名的重复指令。虽然很容易,但重复指令运行较慢,会使你的代码复杂化。所以,这就该派JMESPath上场了!

用JMESPath表达式编写代码:

  1. persons[*].age 

它将返回一个包含所有年龄的数组:[38, 45, 14].

假设要筛选列表,只获取名为“erik”的人的年龄。你可以编写一个筛选程序来执行此操作:

  1. persons[?name=='erik'].age 

看,多么流畅!

因为JMESPath不属于Python标准库,所以你需要一起安装pip或pipenv。例如,在虚拟环境中使用pip:

  1. $ pip3 install jmespath 
  2. $ python3Python 3.8.2 (default, Jul 16 2020, 14:00:26) 
  3. >>> import jmespath 
  4. >>> j = { "people": [{ "name": "erik","age": 38 }] } 
  5. >>> jmespath.search("people[*].age", j) 
  6. [38] 
  7. >>> 

现在就去试一试吧!请严格按照交互式教程操作,同时也不要忘了在JMESPath站点上查看示例哦!

【责任编辑:赵宁宁 TEL:(010)68476606】

 

来源:今日头条内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯