成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python中JSON結構數據的高效增刪改操作

開發 后端
在上一期文章中我們一起學習了在Python中如何使用jsonpath庫,對JSON格式數據結構進行常規的節點條件查詢,可以滿足日常許多的數據處理需求。

 1 簡介

在上一期文章中我們一起學習了在Python中如何使用jsonpath庫,對JSON格式數據結構進行常規的節點條件查詢,可以滿足日常許多的數據處理需求。

[[416269]]

而在上一期結尾處,我提到了還有其他JSONPath功能相關的進階Python庫,在今天的文章中,我就將帶大家學習更加高級的JSON數據處理方式。

[[416270]]

 

2 基于jsonpath-ng的進階JSON數據處理方法

jsonpath-ng是一個功能強大的Python庫,它整合了jsonpath-rw、jsonpath-rw-ext等第三方JSONPath拓展庫的實用功能,使得我們可以基于JSONPath語法,實現更多操縱JSON數據的功能,而不只是查詢數據而已,使用pip install jsonpath-ng進行安裝:

2.1 JSON數據的增刪改

jsonpath-ng中設計了一些方法,可以幫助我們實現對現有JSON數據的增刪改操作,首先我們來學習jsonpath-ng中如何定義JSONPath模式,并將其運用到對數據的匹配上,依然以上篇文章的數據為例: 

  1. import json 
  2. from jsonpath_ng import parse 
  3.  
  4. # 讀入示例json數據 
  5. with open('json示例.json', encoding='utf-8'as j: 
  6.     demo_json = json.loads(j.read()) 
  7.      
  8. # 構造指定JSONPath模式對應的解析器 
  9. parser = parse('$..paths..steps[*].duration'
  10.  
  11. # 利用解析器的find方法找到目標數據中所有滿足條件的節點 
  12. matches = parser.find(demo_json) 
  13.  
  14. # 利用value屬性取得對應匹配結果的值 
  15. matches[0].value 

而基于上面產生的一些對象我們就可以實現對JSON數據的增刪改:

2.1.1 對JSON數據進行增操作

在jsonpath-ng中對JSON數據添加節點,思想是先構造對「原先不存在」的節點進行匹配的解析器對象,利用find_or_create方法處理原始JSON數據: 

  1. # 構造示例數據 
  2. demo_json = { 
  3.     'level1': [ 
  4.         { 
  5.             'level2': {} 
  6.         }, 
  7.         { 
  8.             'level2': { 
  9.                 'level3': 12 
  10.             } 
  11.         } 
  12.     ] 
  13.  
  14. # 構造規則解釋器,所有除去最后一層節點規則外可以匹配到的節點 
  15. # 都屬于合法匹配結果,會在匹配結果列表中出現 
  16. parser = parse('level1[*].level2.level3'
  17.  
  18. matches = parser.find_or_create(demo_json) 
  19.  
  20. demo_json 

在find_or_create操作之后,demo_json就被修改成下面的結果: 

 

接下來的事情就很簡單了,只需要在matches結果中進行遍歷,遇到value屬性為{}的,就運用full_path.update_or_create()方法對原始JSON數據進行更新即可,比如這里我們填充999: 

  1. for match in matches: 
  2.     if match.value == {}: 
  3.         # 更新原始輸入的JSON數據 
  4.         match.full_path.update_or_create(demo_json, 999) 
  5.  
  6. demo_json 

  

2.1.2 對JSON數據進行刪操作

當我們希望對JSON數據中指定JSONPath規則的節點予以刪除時,可以使用到parse對象的filter()方法傳入lambda函數,在lambda函數中進行條件判斷,返回的即為刪除指定節點之后的輸入數據。

以上一步「增」操作后得到的demo_json為例,我們來對其level1[*].level2.level3值為999的予以過濾: 

  1. parser = parse('level1[*].level2.level3'
  2.  
  3. # 過濾 level1[*].level2.level3 規則下值為 999 的節點 
  4. parser.filter(lambda x: x == 999, demo_json) 
  5. demo_json 

可以看到結果正是我們所預期的: 

 

2.1.3 對JSON數據進行改操作

對JSON數據中的指定節點進行改操作非常的簡單,只需要使用parse對象的update或update_or_create方法即可,使用效果的區別如下所示,輕輕松松就可以完成兩種策略下的節點更新操作😋: 

 

jsonpath-ng中還有一些豐富的功能,這里就不再贅述,感興趣的讀者朋友可以前往https://github.com/h2non/jsonpath-ng查看。

 

責任編輯:華軒 來源: Python大數據分析
相關推薦

2009-11-13 15:54:26

ADO.NET數據庫操

2019-11-07 15:39:36

數據庫MySQL文章

2024-10-10 15:24:50

JSONPython

2025-04-11 10:13:00

數據庫APIFastAPI

2016-10-13 19:16:28

Python編程語言mysql

2023-06-08 08:13:43

2020-10-29 08:39:45

JSONJava對象

2023-09-21 16:13:20

Python數據結構

2021-01-18 14:04:49

java監控操作

2010-03-16 16:47:25

Python數組

2012-04-19 10:06:16

ibmdw

2011-09-02 14:18:53

OracleBULK COLLECFORALL

2024-05-13 00:47:37

JSON對象數據

2025-01-13 12:46:31

SpringBootJacksonJSON

2010-03-03 10:45:09

Python字典

2012-04-12 09:23:15

達夢數據庫

2024-05-16 16:06:59

JSON數據二進制

2024-11-13 15:22:36

Python列表切片

2020-07-22 16:40:23

增刪改查Java代碼

2024-08-29 08:58:30

JPA編寫數據操
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91精品国产色综合久久 | 日韩成人免费 | 亚洲欧美一区二区三区视频 | 欧美日韩亚洲系列 | 午夜精品久久久久久久久久久久久 | 四虎在线观看 | 久久久久久久91 | 一区二区精品视频 | 国产色网站 | 日本一区二区高清视频 | 成人精品一区二区三区 | 亚洲精品一区二区三区在线 | 人干人操| 亚洲欧美在线免费观看 | 91视频免费在观看 | 中文字幕一区二区三区在线观看 | 久久久www成人免费无遮挡大片 | 在线中文视频 | 91久久看片 | 精品国产一二三区 | 81精品国产乱码久久久久久 | 91精品国产高清久久久久久久久 | 欧美黑人又粗大 | 久久精品福利视频 | 精品一二三区 | 一区二区三区免费 | 欧美电影免费网站 | 一级毛片中国 | 性视频一区 | 精品欧美一区二区三区久久久 | 国产在线精品一区二区 | 日本三级在线 | 国产精品99久久久久久www | av国产在线观看 | a毛片视频网站 | 国产精品毛片一区二区三区 | 色香蕉在线 | 一区二区三区视频播放 | 成人午夜网站 | 国产91九色 | 黄色片大全在线观看 |