【Python進級】03、json
3843 ワード
このセクションでは、Python言語を使用してJSONオブジェクトを符号化および復号する方法について説明します.
ここでの符号化とは、文字符号化ではなく、pythonオブジェクトをネットワーク上または他のメディア上で伝送可能なテキスト情報に変換することを意味する.
一、jsonの概要
JSON:JavaScript Object Notation(JavaScriptオブジェクト表現)
JSONはテキスト情報を格納・交換する構文である.XMLに似ています.
JSONはXMLより小さく、より速く、解析しやすい.
JSONはJavascript構文を使用してデータオブジェクトを記述しますが、JSONは言語とプラットフォームから独立しています.JSON解析器とJSONライブラリは多くの異なるプログラミング言語をサポートしています.現在、非常に多くのダイナミック(PHP、JSP、.NET)プログラミング言語がJSONをサポートしています.
JSON例
このsitesオブジェクトは,3つのサイトレコード(オブジェクト)を含む配列である.
Pythonのようなdict
json構文規則:データ名/値ペア データカンマ区切り かっこ保存オブジェクト 角括弧保存配列 二、jsonモジュール
encode
PythonオブジェクトをJSON文字列に符号化
decode
エンコードされたJSON文字列をPythonオブジェクトに復号
pythonとjsonは、次の構造変換をサポートします.
ケース:ユーザー情報を保存するjsonファイルがあり、jsonをUserクラスとして解析する必要があります.
User = nametuple('User', ['name', 'age', 'gender', 'phone', 'mail'])
ソリューション:
jsonを辞書として解析し,辞書を再処理する
object_の使用hook
ここでの符号化とは、文字符号化ではなく、pythonオブジェクトをネットワーク上または他のメディア上で伝送可能なテキスト情報に変換することを意味する.
一、jsonの概要
JSON:JavaScript Object Notation(JavaScriptオブジェクト表現)
JSONはテキスト情報を格納・交換する構文である.XMLに似ています.
JSONはXMLより小さく、より速く、解析しやすい.
JSONはJavascript構文を使用してデータオブジェクトを記述しますが、JSONは言語とプラットフォームから独立しています.JSON解析器とJSONライブラリは多くの異なるプログラミング言語をサポートしています.現在、非常に多くのダイナミック(PHP、JSP、.NET)プログラミング言語がJSONをサポートしています.
JSON例
{
"sites": [
{ "name":" " , "url":"www.runoob.com" },
{ "name":"google" , "url":"www.google.com" },
{ "name":" " , "url":"www.weibo.com" }]}
このsitesオブジェクトは,3つのサイトレコード(オブジェクト)を含む配列である.
Pythonのようなdict
json構文規則:
In [4]: import json
In [5]: json.
json.JSONDecoder json.dump json.load
json.JSONEncoder json.dumps json.loads
json.decoder json.encoder json.scanner
encode
PythonオブジェクトをJSON文字列に符号化
decode
エンコードされたJSON文字列をPythonオブジェクトに復号
pythonとjsonは、次の構造変換をサポートします.
| Supports the following objects and types by default:
|
| +-------------------+---------------+
| | Python | JSON |
| +===================+===============+
| | dict | object |
| +-------------------+---------------+
| | list, tuple | array |
| +-------------------+---------------+
| | str, unicode | string |
| +-------------------+---------------+
| | int, long, float | number |
| +-------------------+---------------+
| | True | true |
| +-------------------+---------------+
| | False | false |
| +-------------------+---------------+
| | None | null |
| +-------------------+---------------+
ケース:ユーザー情報を保存するjsonファイルがあり、jsonをUserクラスとして解析する必要があります.
User = nametuple('User', ['name', 'age', 'gender', 'phone', 'mail'])
[root@Node3 src]# cat text.json
{
"users": [
{
"name": "xj",
"age": 25,
"gender": "man",
"phone": "15711112222",
"mail": "[email protected]"
}]
}
ソリューション:
jsonを辞書として解析し,辞書を再処理する
object_の使用hook
In [3]: ret = json.load(open("/tmp/src/text.json"))
In [4]: ret
Out[4]:
{u'users': [{u'age': 25,
u'gender': u'man',
u'mail': u'[email protected]',
u'name': u'xj',
u'phone': u'15711112222'}]}
In [5]: type(ret)
Out[5]: dict
In [6]: ret.
ret.clear ret.items ret.pop ret.viewitems
ret.copy ret.iteritems ret.popitem ret.viewkeys
ret.fromkeys ret.iterkeys ret.setdefault ret.viewvalues
ret.get ret.itervalues ret.update
ret.has_key ret.keys ret.values
In [7]: ret['users']
Out[7]:
[{u'age': 25,
u'gender': u'man',
u'mail': u'[email protected]',
u'name': u'xj',
u'phone': u'15711112222'}]
In [16]: type(ret['users'])
Out[16]: list
In [17]: ret['users'][0]
Out[17]:
{u'age': 25,
u'gender': u'man',
u'mail': u'[email protected]',
u'name': u'xj',
u'phone': u'15711112222'}
In [19]: ret['users'][0]["age"]
Out[19]: 25