Json 概述以及 python 对 json 的相关操作
什么是 json :
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。
同时也易于机器解析和生成。它基于 JavaScript Programming Language, Standard
ECMA-262 3rd Edition - December 1999 的一个子集。 JSON 采用完全独立于语言的
文本格式, 但是也使用了类似于 C 语言家族的习惯 (包括 C, C++, C#, Java, JavaScript,
Perl, Python 等)。这些特性使 JSON 成为理想的数据交换语言。
JSON 建构于两种结构:
“名称 / 值”对的集合( A collection of name/value pairs )。不同的语言中,它被理解为
对象( object ),纪录( record ),结构( struct ),字典( dictionary ),哈希表( hash
table ),有键列表( keyed list ),或者关联数组 ( associative array )。
值的有序列表 (An ordered list of values )。在大部分语言中, 它被理解为数组 (array )。
这些都是常见的数据结构。 事实上大部分现代计算机语言都以某种形式支持它们。 这使得一
种数据格式在同样基于这些结构的编程语言之间交换成为可能。
jso 官方说明参见: http://json.org/
Python 操作 json 的标准 api 库参考: http://docs.python.org/library/json.html
对简单数据类型的 encoding 和 decoding :
使用简单的 json.dumps 方法对简单数据类型进行编码,例如:
?
1
2
3
4
5
6
import json
http://qun.qqlove789.com
obj = [[1,2,3],123,123.123,'abc',{'key1':(1,2,3),'key2':(4,5,6)}]
encodedjson = json.dumps(obj)
print repr(obj)
print encodedjson
输出:
[[1, 2, 3], 123, 123.123, 'abc', {'key2': (4, 5, 6), 'key1': (1, 2, 3)}]
[[1, 2, 3], 123, 123.123, "abc", {"key2": [4, 5, 6], "key1": [1, 2, 3]}]
通过输出的结果可以看出,简单类型通过 encode 之后跟其原始的 repr() 输出结果非常相
似,但是有些数据类型进行了改变,例如上例中的元组则转换为了列表。在 json 的编码过
程中,会存在从 python 原始类型向 json 类型的转化过程,具体的转化对照如下: