json子產品
JSON就是JavaScript Object Notation,這個子產品完成了python對象和JSON字元串的互相轉換! json是一種很多語言支援的通用語言
作用:如下,作為一個橋梁 在api接口中資料調用傳輸中常用
php資料類型 <----> json格式 <---> python
java資料類型 <----> json格式 <----> python
Mysql Text類型 <----> json格式 <----> python
json和python 字元類型的對比
<code> </code><code>| +</code><code>-------------------+---------------+</code>
<code> </code><code>| | Python | JSON |</code>
<code> </code><code>| +===================+===============+</code>
<code> </code><code>| | dict | object |</code>
<code> </code><code>| | list, tuple | array |</code>
<code> </code><code>| | str, unicode | string |</code>
<code> </code><code>| | </code><code>int</code><code>, long, </code><code>float</code> <code>| number |</code>
<code> </code><code>| | </code><code>True</code> <code>| </code><code>true</code> <code>|</code>
<code> </code><code>| | </code><code>False</code> <code>| </code><code>false</code> <code>|</code>
<code> </code><code>| | None | </code><code>null</code> <code>|</code>
用途場景1:
<a href="http://s4.51cto.com/wyfs02/M02/7F/5A/wKioL1cbTYvDLs6SAABORLwq_r8432.png" target="_blank"></a>
一 、dumps函數
案例一: (案例隻為示範效果)
cuizhiliangdeMacBook-Air:test cuizhiliang$ cat 1.py
<code>#!/usr/bin/env python</code>
<code>#encoding=utf8</code>
<code>import</code> <code>json</code>
<code>d </code><code>=</code> <code>{</code><code>'name'</code><code>:</code><code>"張三"</code><code>, </code><code>'age'</code><code>:</code><code>24</code><code>, </code><code>'有病'</code><code>: </code><code>False</code> <code>}</code>
<code>print</code> <code>json.dumps(d)</code>
結果:
<code>cuizhiliangdeMacBook</code><code>-</code><code>Air:test cuizhiliang$ python </code><code>1.py</code>
<code>{</code><code>"age"</code><code>: </code><code>24</code><code>, </code><code>"\u6709\u75c5"</code><code>: false, </code><code>"name"</code><code>: </code><code>"\u5f20\u4e09"</code><code>}</code>
案例二: 參數的效果:
<code>print</code> <code>json.dumps(d, ensure_ascii</code><code>=</code><code>False</code><code>, indent</code><code>=</code><code>4</code><code>, sort_keys</code><code>=</code><code>True</code><code>)</code>
<code>{</code>
<code> </code><code>"age"</code><code>: </code><code>24</code><code>, </code>
<code> </code><code>"有病"</code><code>: false, </code>
<code> </code><code>"name"</code><code>: </code><code>"張三"</code>
<code>}</code>
常用參數:
ensure_ascii 預設是True,字元編碼格式
sort_keys 是否對齊
indent=4 縮進問題
二、dump 和load函數,常用在檔案流讀中的用途場景1 用途,就像pickle這個子產品的功能一樣
json dump函數 将資料已sjon格式寫入檔案流中
cuizhiliangdeMacBook-Air:test cuizhiliang$ cat test_json_dump.py
<code>f </code><code>=</code> <code>file</code><code>(</code><code>'file.json'</code><code>, </code><code>'w'</code><code>)</code>
<code>json.dump(d, f, ensure_ascii</code><code>=</code><code>False</code><code>, indent</code><code>=</code><code>4</code><code>, sort_keys</code><code>=</code><code>True</code><code>)</code>
cuizhiliangdeMacBook-Air:test cuizhiliang$ python test_json_dump.py
存入文本結果:
cuizhiliangdeMacBook-Air:test cuizhiliang$ cat file.json
{
"age": 24,
"name": "張三",
"有病": false
}
差別json dumps 實作,dumps當然不是處理檔案流的咯,要通過檔案的write功能寫入檔案中
等價于:
cuizhiliangdeMacBook-Air:test cuizhiliang$ cat test_json_dumps.py
<code>f.write(json.dumps(d, ensure_ascii</code><code>=</code><code>False</code><code>, indent</code><code>=</code><code>4</code><code>, sort_keys</code><code>=</code><code>True</code><code>))</code>
json load 從檔案流中讀取json資料
cuizhiliangdeMacBook-Air:test cuizhiliang$ cat test_json_load.py
<code># encoding: utf-8</code>
<code>f </code><code>=</code> <code>open</code><code>(</code><code>'file.json'</code><code>, </code><code>'r'</code><code>)</code>
<code>d </code><code>=</code> <code>json.load(f)</code>
<code>print</code> <code>type</code><code>(d)</code>
<code>print</code> <code>d</code>
cuizhiliangdeMacBook-Air:test cuizhiliang$
cuizhiliangdeMacBook-Air:test cuizhiliang$ python test_json_load.py
<code><</code><code>type</code> <code>'dict'</code><code>></code>
<code>{u</code><code>'age'</code><code>: </code><code>24</code><code>, u</code><code>'\u6709\u75c5'</code><code>: </code><code>False</code><code>, u</code><code>'name'</code><code>: u</code><code>'\u5f20\u4e09'</code><code>}</code>
<code></code>
本文轉自殘劍部落格51CTO部落格,原文連結http://blog.51cto.com/cuidehua/1767061如需轉載請自行聯系原作者
cuizhiliang