1 #python json
2
3 #Author : Hongten
4 #Mailto : hongtenzone@foxmail.com
5 #Blog : http://www.cnblogs.com/hongten
6 #QQ : 648719819
7 #Version : 1.0
8 #Create : 2013-08-29
9
10 importjson11
12 __doc__ = '''
13 JSON(JavaScript Object Notation)是一种轻量级的数据交换14 格式。易于人阅读和编写,同时也易于机器解析和生成。15
16 在python中,json模块提供的dumps()方法可以对简单的数据进行编码:17 import json18
19 obj = [['a', 'b', 'c'], 1, 3, 4, 'good', 'boy',(88, 42, 'hongten'), {'name' : 'hongten'}]20 encodedjson = json.dumps(obj)21 print(repr(obj))22 print(encodedjson)23
24 #输出:25 #[['a', 'b', 'c'], 1, 3, 4, 'good', 'boy', (88, 42, 'hongten'), {'name': 'hongten'}]26 #[["a", "b", "c"], 1, 3, 4, "good", "boy", [88, 42, "hongten"], {"name": "hongten"}]27
28 objA = [True, False, None]29 encodedjsonA = json.dumps(objA)30 print(repr(objA))31 print(encodedjsonA)32
33 #输出:34 #[True, False, None]35 #[true, false, null]36
37 在json的编码过程中,会存在从python原始类型向json类型的转换过程,具体的转换38 如下:39
40 python --> json41 dict object42 list,tuple array43 str,unicode string44 int,long,float number45 True true46 False false47 None null48
49 json转换为python数据类型:50 import json51 testB = 'hongten'52 dump_test = json.dumps(testB)53 print(testB)54 print(dump_test)55 load_test = json.loads(dump_test)56 print(load_test)57
58 #输出:59 #hongten60 #"hongten"61 #hongten62
63 而json转换为python类型的时候,调用的是json.loads()方法,按照如下规则转换的:64
65 json --> python66 object dict67 array list68 string str69 number(int) int70 number(real) float71 true True72 false False73 null None74
75 排序功能使得存储的数据更加有利于观察,也使得对json输出的对象进行比较:76 import json77 data1 = {'b':789,'c':456,'a':123}78 data2 = {'a':123,'b':789,'c':456}79 d1 = json.dumps(data1,sort_keys=True)80 d2 = json.dumps(data2)81 d3 = json.dumps(data2,sort_keys=True)82 print(d1)83 print(d2)84 print(d3)85 print(d1==d2)86 print(d1==d3)87
88 #输出:89 #{"a": 123, "b": 789, "c": 456}90 #{"a": 123, "c": 456, "b": 789}91 #{"a": 123, "b": 789, "c": 456}92 #False93 #True94
95 indent参数是缩进的意思:96 import json97 testA = {'name' : 'hongten',98 'age' : '20',99 'gender' : 'M'}100 test_dump = json.dumps(testA, sort_keys = True, indent = 4)101 print(test_dump)102
103 #输出:104 #{105 # "age": "20",106 # "gender": "M",107 # "name": "hongten"108 #}109
110
111 '''
112
113 print(__doc__)114 print('#' * 50)115 #使用json.dumps()方法对简单数据进行编码
116 obj = [['a', 'b', 'c'], 1, 3, 4, 'good', 'boy',(88, 42, 'hongten'), {'name' : 'hongten'}]117 encodedjson =json.dumps(obj)118 print(repr(obj))119 print(encodedjson)120
121 #[['a', 'b', 'c'], 1, 3, 4, 'good', 'boy', (88, 42, 'hongten'), {'name': 'hongten'}]
122 #[["a", "b", "c"], 1, 3, 4, "good", "boy", [88, 42, "hongten"], {"name": "hongten"}]
123
124
125 objA =[True, False, None]126 encodedjsonA =json.dumps(objA)127 print(repr(objA))128 print(encodedjsonA)129
130 #[True, False, None]
131 #[true, false, null]
132
133 #测试json转换为python类型
134 testB = 'hongten'
135 dump_test =json.dumps(testB)136 print(testB)137 print(dump_test)138 load_test =json.loads(dump_test)139 print(load_test)140
141 #输出:
142 #hongten
143 #"hongten"
144 #hongten
145
146
147 #排序测试
148 data1 = {'b':789,'c':456,'a':123}149 data2 = {'a':123,'b':789,'c':456}150 d1 = json.dumps(data1,sort_keys=True)151 d2 =json.dumps(data2)152 d3 = json.dumps(data2,sort_keys=True)153 print(d1)154 print(d2)155 print(d3)156 print(d1==d2)157 print(d1==d3)158
159 #输出:
160 #{"a": 123, "b": 789, "c": 456}
161 #{"a": 123, "c": 456, "b": 789}
162 #{"a": 123, "b": 789, "c": 456}
163 #False
164 #True
165
166 #测试缩进
167 testA = {'name' : 'hongten',168 'age' : '20',169 'gender' : 'M'}170 test_dump = json.dumps(testA, sort_keys = True, indent = 4)171 print(test_dump)172 #输出:
173 #{
174 #"age": "20",
175 #"gender": "M",
176 #"name": "hongten"
177 #}