天天看點

python中的json子產品

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>&lt;</code><code>type</code> <code>'dict'</code><code>&gt;</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