python3のjson格式數(shù)據(jù)的處理

一、引言

在自動(dòng)化測試的時(shí)候經(jīng)常遇到j(luò)son格式數(shù)據(jù)的處理,也經(jīng)常被周圍想剛學(xué)習(xí)Python的同志問起這個(gè),今天專門寫一個(gè)短文介紹一下。

二、先說說json

現(xiàn)在json越來越流行,基本上稱為主流,開發(fā)在做技術(shù)方案的時(shí)候也首選json做為數(shù)據(jù)交換的格式。各位測試的小伙伴也發(fā)現(xiàn)了,對(duì)于xml格式,json是比較易于閱讀。反正總結(jié)起來就是json很多好處,運(yùn)用很廣泛,想學(xué)習(xí)自動(dòng)化的小伙伴,不管是Python、Java還是Ruby,對(duì)于json數(shù)據(jù)的處理還是需要有掌握的。

三、Python的處理方式

先給一個(gè)測試的數(shù)據(jù)

{
  "name": "abc",
  "url": "http://www.abc.com",
  "page": 88,
  "isNonProfit": true,
  "address": {
    "street": "科技園路.",
    "city": "江蘇蘇州",
    "country": "中國"
  },
  "links": [
    {
      "name": "Google",
      "url": "http://www.google.com"
    },
    {
      "name": "Baidu",
      "url": "http://www.baidu.com"
    },
    {
      "name": "SoSo",
      "url": "http://www.SoSo.com"
    }
  ]
}

1. 直接解析json字符串

# -*- coding: utf-8 -*-
import json  # 一個(gè)Python3內(nèi)置的模塊不需要安裝

json_str = '{"name":"abc","url":"http://www.abc.com","page":88,"isNonProfit":true,"address":{"street":"科技園路.","city":"江蘇蘇州","country":"中國"},"links":[{"name":"Google","url":"http://www.google.com"},{"name":"Baidu","url":"http://www.baidu.com"},{"name":"SoSo","url":"http://www.SoSo.com"}]}'
print('json_str的類型是:' + str(type(json_str)))
json_dict = json.loads(json_str)
print('json_dict的類型是:' + str(type(json_dict)))
print('name的值是:'+json_dict['name'])

我們直接使用json模塊的loads方法,傳入json格式的字符串,返回的是Python中的字典(dict)格式。之后我們可以使用字典的取值方式,獲取各個(gè)key的值。
輸出結(jié)果:

json_str的類型是:<class 'str'>
json_dict的類型是:<class 'dict'>
name的值是:abc

2. 解析json文件

我想將上面的json字符串的內(nèi)容保存在了一個(gè)文件中json_file.json,與測試腳本放在一個(gè)目錄下面。

# -*- coding: utf-8 -*-
import json  # 一個(gè)Python3內(nèi)置的模塊不需要安裝

f = open(file='json_file.json', mode='r', encoding='utf-8')
json_dict = json.load(f)
print('json_dict的類型是:' + str(type(json_dict)))
print('name的值是:' + json_dict['name'])

先使用open函數(shù)打開一個(gè)文件,傳到load方法中,其實(shí)看源碼可以知道load方法還是調(diào)用了loads方法。
打印結(jié)果:

json_dict的類型是:<class 'dict'>
name的值是:abc

3. 字典數(shù)據(jù)轉(zhuǎn)成json字符串

new_json_str = json.dumps(json_dict)

直接使用dumps函數(shù)就可以了

4. 字典數(shù)據(jù)轉(zhuǎn)成json字符串,到文件

上面這個(gè)方法是將json字符串保存到變量中的,還有一個(gè)方法dump可以將字符串直接保存到文件。

f = open(file='new_json_file.json', mode='w', encoding='utf-8')
new_json_str = json.dump(json_dict,f,ensure_ascii=False)

ensure_ascii:控制是否轉(zhuǎn)義中文,默認(rèn)True,文件中的中文會(huì)保存成\u開頭的編碼。設(shè)置成False就會(huì)正確顯示中文。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、Python簡介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡介】: Python 是一個(gè)...
    _小老虎_閱讀 6,319評(píng)論 0 10
  • 常用模塊 認(rèn)識(shí)模塊 什么是模塊 什么是模塊? 常見的場景:一個(gè)模塊就是一個(gè)包含了python定義和聲明的文件,文...
    go以恒閱讀 2,168評(píng)論 0 6
  • 兩天學(xué)習(xí),干貨太多,慢慢熬湯,好喝營養(yǎng)。 不單單課程精彩,海峰老師的金句越接觸DISC,越有體會(huì)。 越...
    行云流水_bb06閱讀 627評(píng)論 6 7
  • 今天521是我愛你的日子打算帶老媽上逛街購物吃美食,這輩子最長情就是在特殊日子里陪伴父母左右。我的余生我會(huì)好好愛你...
    驚奇女俠墨閱讀 335評(píng)論 0 2
  • 定義:將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示。建造者模式是一種對(duì)象創(chuàng)建型模式。建...
    shuixingge閱讀 369評(píng)論 0 0

友情鏈接更多精彩內(nèi)容