91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

22文件IO_json_MessagePack

發布時間:2020-07-21 11:19:58 來源:網絡 閱讀:279 作者:chaijowin 欄目:編程語言

?

jsonMessagePack

?

目錄

json... 1

json的數據類型:... 1

pythonjson... 3

json模塊:... 4

MessagePack... 5

?

?

?

json

java script object notationjs對象標記,是一種輕量級的數據交換格式,它基于ECMAScriptw3c制定的JS規范)的一個子集,采用完全獨立于編程語言的文本格式來存儲和表示數據;

ECMAScript是標準,json是實現的產品,另ES5ES6js產品;

?

注:

AJAXasync javascript xmlxml逐步被json取代,AJAX用于前后端傳輸數據,AJAX是一種在無需重新加載整個網頁的情況下,能夠更新部分網頁的技術;

chrome中的v8引擎(開天辟地的大事);

nodejs,前后端均可用;

?

http://www.w3school.com.cn/index.html?? #web教程

?

?

json的數據類型:

value值:雙引號引起來的字符串,數值、truefalsenull、對象、數組,這些都是值;

22文件IO_json_MessagePack

?

string字符串:由雙引號包圍起來的任意字符的組合,可以有轉義字符;

22文件IO_json_MessagePack

?

number數值:有正負、有整數、浮點數;

22文件IO_json_MessagePack

?

object對象:

無序的鍵值對的集合;

格式:{string1:value1,...stringn:valuen},使用{}

key必須是一個字符串(而python-dictkey可以為number),需要雙引號包圍這個字符串;

value可以是任意合法的值;

22文件IO_json_MessagePack

?

array數組:有序的值的集合;

格式:[val1,...valn],使用[]

22文件IO_json_MessagePack

?

例:

test.json

{

? "person": [

??? {

????? "name": "tom",

????? "age": 18

??? },

??? {

????? "name": "jerry",

????? "age": 16

??? }?? #按嚴格定義,此處}后不能有逗號,但有些環境會自動把逗號去掉

? ],

? "total": 2

}

test2.json

a?? #單個值也是json

?

注:

https://www.bejson.com/zhuanyi/?? #json壓縮轉義

{"person":[{"name":"tom","age":18},{"name":"jerry","age":16}],"total":2}

?

?

pythonjson

python支持少量內建數據類型到json類型的轉換;

Python類型

Json類型

True

True

False

False

None

Null

str

string

int

integer

float

float

list

array

dict

object

?

?

json模塊:

常用方法:

json.dumps(),在內存中操作,py object-->json

json.loads(),在內存中操作,json-->py object

json.dump(),將json編碼序列化存入文件,py object-->file

json.load(),從文件讀取數據,將json編碼反序列化,file-->py object

?

序列化牽涉到到字符操作、字節操作、編碼操作,查看dumps源碼;

json是字符編碼;

中文,要注意一個原則,用什么編碼寫的用什么編碼打開;

?

一般json編碼的數據很少落地,數據都是通過網絡傳輸,傳輸的時候,要考慮壓縮它;

本質上來說,它就是個文本,是個字符串;

json很簡單,幾乎所有語言編程都支持json,應用范圍十分廣泛;

?

例:

import json

?

d = {'name':'tom','age':18,'interest':['music','movie'],'test':True,'test2':None}

j = json.dumps(d)

print(j)

?

d1 = json.loads(j)

print(d1)

注:

運行結果:

{"name": "tom", "age": 18, "interest": ["music", "movie"], "test": true, "test2": null}

{'name': 'tom', 'age': 18, 'interest': ['music', 'movie'], 'test': True, 'test2': None}

?

例:

In [6]: class AA:

?? ...:???? pass

?? ...:

In [7]: json.dumps(AA())?? #不可序列化

---------------------------------------------------------------------------

TypeError????????????

……

TypeError: <__main__.AA object at 0x7f8cf9f84978> is not JSON serializable

In [8]: class AA:

?? ...:???? def ser(self):

?? ...:???????? return 'AA'

?? ...:????

In [9]: json.dumps(AA().ser()) ??#序列化方法,方法要自己實現,把要返回的值收集好

Out[9]: '"AA"'

?

?

?

MessagePack

第三方庫;

是一個基于二進制,高效的對象序列化類庫,可用于跨語言通訊;

它可以像json那樣 ,在許多語言之間交換結構對象,但它比json更快速也更輕巧;

支持pythonrubyjavac/c++等眾多語言,宣稱比google protocol buffers還要快4倍;

兼容jsonpickle

?

https://msgpack.org/

22文件IO_json_MessagePack

注:

27bytes-->18bytes

82,A7,C3等均為十六進制,跳過ascii0-127);

?

]$ pip install msgpack-python

Collecting msgpack-python

? Downloading https://mirrors.aliyun.com/pypi/packages/8a/20/6eca772d1a5830336f84aca1d8198e5a3f4715cd1c7fc36d3cc7f7185091/msgpack-python-0.5.6.tar.gz (138kB)

……

?

常用方法:

import msgpack

msgpack.packb(),同msgpack.dumps(),序列化對象,dumps是用來兼容jsonpickle

msgpack.unpackb(),同msgpack.loads(),反序列化對象,loads是用來兼容jsonpickle

msgpack.pack(),同msgpack.dump(),序列化對象保存到文件對象,用dump來兼容;

msgpack.unpack(),同msgpack.load(),反序列化對象保存到文件對象,用load來兼容;

?

msgpack簡單易用,高效壓縮,支持語言豐富,用它序列化是一種很好的選擇;

?

例:

import msgpack

import json

?

js = '{"person":[{"name":"tom","age":18},{"name":"jerry","age":16}],"total":2}'

?

d = json.loads(js)

print(type(d))

print(d)

print()

?

msg = msgpack.dumps(d)

print(type(msg))

print(len(msg))

print(msg)

print()

?

bts = msgpack.loads(msg,encoding='utf-8')

print(type(bts))

print(bts)

注:

運行結果:

<class 'dict'>

{'person': [{'name': 'tom', 'age': 18}, {'name': 'jerry', 'age': 16}], 'total': 2}

?

<class 'bytes'>

48

b'\x82\xa6person\x92\x82\xa4name\xa3tom\xa3age\x12\x82\xa4name\xa5jerry\xa3age\x10\xa5total\x02'

?

<class 'dict'>

{'person': [{'name': 'tom', 'age': 18}, {'name': 'jerry', 'age': 16}], 'total': 2}

?

長度print(len(msg))msgpack.orgTry的結果對比:

22文件IO_json_MessagePack

?

?


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新蔡县| 台南市| 乌恰县| 山阳县| 定州市| 通榆县| 庐江县| 闵行区| 诏安县| 应用必备| 浪卡子县| 佛坪县| 化德县| 上思县| 东乡族自治县| 荥阳市| 江陵县| 彝良县| 奇台县| 汾西县| 塔河县| 北川| 子洲县| 德令哈市| 亚东县| 富顺县| 无棣县| 梁山县| 大城县| 宝兴县| 万年县| 张北县| 西贡区| 鹿邑县| 榆中县| 桃江县| 海林市| 丁青县| 灯塔市| 团风县| 宾阳县|