最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入理解Python對Json的解析

 更新時間:2017年02月14日 11:55:04   作者:laixintao  
Json是一種常用的數(shù)據(jù)交換結(jié)構(gòu),由于輕量、易于閱讀和編寫等特點(diǎn),在網(wǎng)絡(luò)方面應(yīng)用很廣。下面這篇文章主要介紹了Python對Json解析的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。

Json簡介

JSON(JavaScript Object Notation) 是一種輕量級的數(shù)據(jù)交換格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一個子集。 JSON采用完全獨(dú)立于語言的文本格式,但是也使用了類似于C語言家族的習(xí)慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)。這些特性使JSON成為理想的數(shù)據(jù)交換語言。易于人閱讀和編寫,同時也易于機(jī)器解析和生成。

它的格式一般是這樣的:

對象是一個無序的“‘名稱/值'對”集合。一個對象以“{”(左括號)開始,“}”(右括號)結(jié)束。每個“名稱”后跟一個“:”(冒號);“‘名稱/值' 對”之間使用“,”(逗號)分隔。

例如下面這樣:

{"b": "Hello", "c": null, "a": true}

它的值可以是雙引號括起來的字符串(string)、數(shù)值(number)、true、false、 null、對象(object)或者數(shù)組(array)。這些結(jié)構(gòu)可以嵌套。


值(value)可以是雙引號括起來的字符串(string)、數(shù)值(number)、true、false、 null、對象(object)或者數(shù)組(array)。這些結(jié)構(gòu)可以嵌套。

使用Python編碼和解析Json

Python內(nèi)置了json包來幫助我們完成對json的操作。

將Python的字典結(jié)構(gòu)導(dǎo)出到j(luò)son使用json.dumps() ,將json讀成Python的字典結(jié)構(gòu),使用json.loads() 。

如果不是針對string操作而是對文件操作,分別使用json.load()函數(shù)和json.dump()函數(shù)。

import json
 
data = {
 'name' : 'ACME',
 'shares' : 100,
 'price' : 542.23
}
 
json_str = json.dumps(data)
data = json.loads(json_str)
 
# Writing JSON data to file
with open('data.json', 'w') as f:
 json.dump(data, f)
 
# Reading data back
with open('data.json', 'r') as f:
 data = json.load(f)

默認(rèn)的類型對應(yīng)如下:

JSON Python
object dict
array list
string unicode
number (int) int, long
number (real) float
true True
false False
null None

其他數(shù)據(jù)類型與Json之間的編碼和解碼

一般來說,Python對json的解析是list或dict之間的操作,如果需要其他類型與json之間轉(zhuǎn)換,就需要object_hook參數(shù)。先定義一個類,將類的字典初始化成json的key-value鍵值對。這樣,json的參數(shù)就變成了類的屬性。

將一個JSON字典轉(zhuǎn)換為一個Python對象Python

>>> class JSONObject:
...  def __init__(self, d):
...   self.__dict__ = d
...
>>>
>>> data = json.loads(s, object_hook=JSONObject)
>>> data.name
'ACME'
>>> data.shares
50
>>> data.price
490.1

還可以通過指定“函數(shù)”來進(jìn)行轉(zhuǎn)換。

用函數(shù)來指定序列化的方法,即將對象的“屬性-值”對變成字典對,函數(shù)返回一個字典,然后json.dumps會格式化這個字典。

如果是通過函數(shù)將json變成對象,首先獲得類名,然后通過__new__來創(chuàng)建一個對象(不調(diào)用初始化函數(shù)),然后將json字典的各個屬性賦給對象。

使用函數(shù)指定json轉(zhuǎn)換方式Python

def serialize_instance(obj):
 d = { '__classname__' : type(obj).__name__ }
 d.update(vars(obj))
 return d
 
# Dictionary mapping names to known classes
classes = {
 'Point' : Point
}
 
def unserialize_object(d):
 clsname = d.pop('__classname__', None)
 if clsname:
  cls = classes[clsname]
  obj = cls.__new__(cls) # Make instance without calling __init__
  for key, value in d.items():
   setattr(obj, key, value)
  return obj
 else:
  return d

使用方法如下:

>>> p = Point(2,3)
>>> s = json.dumps(p, default=serialize_instance)
>>> s
'{"__classname__": "Point", "y": 3, "x": 2}'
>>> a = json.loads(s, object_hook=unserialize_object)
>>> a
<__main__.Point object at 0x1017577d0>
>>> a.x
2
>>> a.y
3

總結(jié)

以上就是關(guān)于Python對Json解析的全部內(nèi)容了,希望本文的內(nèi)容對大家學(xué)習(xí)或者使用python能帶來一定的幫助,如果有疑問大家可以留言交流。

相關(guān)文章

  • Python對列表中的各項(xiàng)進(jìn)行關(guān)聯(lián)詳解

    Python對列表中的各項(xiàng)進(jìn)行關(guān)聯(lián)詳解

    這篇文章主要給大家介紹了關(guān)于Python對列表中各項(xiàng)進(jìn)行關(guān)聯(lián)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • 如何用Python編寫一個電子考勤系統(tǒng)

    如何用Python編寫一個電子考勤系統(tǒng)

    這篇文章主要介紹了用Python編寫一個電子考勤系統(tǒng),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • Python?shapefile轉(zhuǎn)GeoJson的2種方式實(shí)例

    Python?shapefile轉(zhuǎn)GeoJson的2種方式實(shí)例

    geojson是地圖可視化系統(tǒng)中最常用的地理數(shù)據(jù)格式,幾乎所有主流地圖可視化庫或框架都支持geojson數(shù)據(jù)的加載,下面這篇文章主要給大家介紹了關(guān)于Python?shapefile轉(zhuǎn)GeoJson的2種方式的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • opencv導(dǎo)入頭文件時報錯#include的解決方法

    opencv導(dǎo)入頭文件時報錯#include的解決方法

    這篇文章主要介紹了opencv導(dǎo)入頭文件時報錯#include的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • python服務(wù)器端收發(fā)請求的實(shí)現(xiàn)代碼

    python服務(wù)器端收發(fā)請求的實(shí)現(xiàn)代碼

    這篇文章主要介紹了python服務(wù)器端收發(fā)請求的實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2014-09-09
  • python如何繪制極坐標(biāo)輪廓圖contourf

    python如何繪制極坐標(biāo)輪廓圖contourf

    這篇文章主要介紹了python如何繪制極坐標(biāo)輪廓圖contourf問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Django框架實(shí)現(xiàn)在線考試系統(tǒng)的示例代碼

    Django框架實(shí)現(xiàn)在線考試系統(tǒng)的示例代碼

    這篇文章主要介紹了Django框架實(shí)現(xiàn)在線考試系統(tǒng)的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Python的內(nèi)存泄漏及gc模塊的使用分析

    Python的內(nèi)存泄漏及gc模塊的使用分析

    這篇文章主要介紹了Python的內(nèi)存泄漏及gc模塊的使用分析,有助于讀者進(jìn)一步了解Python的內(nèi)存分配及回收機(jī)制,增強(qiáng)代碼編寫的安全意識,需要的朋友可以參考下
    2014-07-07
  • python求眾數(shù)問題實(shí)例

    python求眾數(shù)問題實(shí)例

    這篇文章主要介紹了python求眾數(shù)問題實(shí)例,包括文件的讀寫、字典的運(yùn)用及數(shù)值的計(jì)算等技巧,需要的朋友可以參考下
    2014-09-09
  • Python優(yōu)化列表接口進(jìn)行分頁示例實(shí)現(xiàn)

    Python優(yōu)化列表接口進(jìn)行分頁示例實(shí)現(xiàn)

    最近,在做測試開發(fā)平臺的時候,需要對測試用例的列表進(jìn)行后端分頁,在實(shí)際去寫代碼和測試的過程中,發(fā)現(xiàn)這里面還是有些細(xì)節(jié)的,故想復(fù)盤一下
    2021-09-09

最新評論

恩施市| 东乡| 华亭县| 东辽县| 佛教| 萨迦县| 彭水| 蒙城县| 古田县| 射洪县| 麦盖提县| 双流县| 和政县| 义乌市| 满城县| 五峰| 祁阳县| 东阿县| 金昌市| 白玉县| 古田县| 和平区| 金昌市| 奉贤区| 乌鲁木齐市| 彭泽县| 科技| 山东省| 葵青区| 林口县| 仲巴县| 喀什市| 和顺县| 呼玛县| 阳谷县| 黔西县| 新和县| 西吉县| 略阳县| 汽车| 精河县|