妖怪幻 发表于 2015-4-20 09:42:23

python开发_json_一种轻量级的数据交换格式

  以下是我做的对于python中json模块的demo
  运行效果:



Python 3.3.2 (v3.3.2:d047928ae3f6, May 16 2013, 00:03:43) on win32
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>>
JSON(JavaScript Object Notation)是一种轻量级的数据交换
格式。易于人阅读和编写,同时也易于机器解析和生成。
在python中,json模块提供的dumps()方法可以对简单的数据进行编码:
import json
obj = [['a', 'b', 'c'], 1, 3, 4, 'good', 'boy',(88, 42, 'hongten'), {'name' : 'hongten'}]
encodedjson = json.dumps(obj)
print(repr(obj))
print(encodedjson)
#输出:
#[['a', 'b', 'c'], 1, 3, 4, 'good', 'boy', (88, 42, 'hongten'), {'name': 'hongten'}]
#[["a", "b", "c"], 1, 3, 4, "good", "boy", , {"name": "hongten"}]

objA =
encodedjsonA = json.dumps(objA)
print(repr(objA))
print(encodedjsonA)
#输出:
#
#

在json的编码过程中,会存在从python原始类型向json类型的转换过程,具体的转换
如下:
python      -->         json
dict                      object
list,tuple                array
str,unicode               string
int,long,float            number
True                      true
False                     false
None                      null
json转换为python数据类型:
import json
testB = 'hongten'
dump_test = json.dumps(testB)
print(testB)
print(dump_test)
load_test = json.loads(dump_test)
print(load_test)
#输出:
#hongten
#"hongten"
#hongten
   
而json转换为python类型的时候,调用的是json.loads()方法,按照如下规则转换的:
json      -->         python
object                  dict
array                     list
string                  str
number(int)               int
number(real)            float
true                      True
false                     False
null                      None
排序功能使得存储的数据更加有利于观察,也使得对json输出的对象进行比较:
import json
data1 = {'b':789,'c':456,'a':123}
data2 = {'a':123,'b':789,'c':456}
d1 = json.dumps(data1,sort_keys=True)
d2 = json.dumps(data2)
d3 = json.dumps(data2,sort_keys=True)
print(d1)
print(d2)
print(d3)
print(d1==d2)
print(d1==d3)
#输出:
#{"a": 123, "b": 789, "c": 456}
#{"a": 123, "c": 456, "b": 789}
#{"a": 123, "b": 789, "c": 456}
#False
#True

indent参数是缩进的意思:
import json
testA = {'name' : 'hongten',
'age' : '20',
'gender' : 'M'}
test_dump = json.dumps(testA, sort_keys = True, indent = 4)
print(test_dump)
#输出:
#{
#    "age": "20",
#    "gender": "M",
#    "name": "hongten"
#}

##################################################
[['a', 'b', 'c'], 1, 3, 4, 'good', 'boy', (88, 42, 'hongten'), {'name': 'hongten'}]
[["a", "b", "c"], 1, 3, 4, "good", "boy", , {"name": "hongten"}]


hongten
"hongten"
hongten
{"a": 123, "b": 789, "c": 456}
{"b": 789, "c": 456, "a": 123}
{"a": 123, "b": 789, "c": 456}
False
True
{
"age": "20",
"gender": "M",
"name": "hongten"
}
>>>
  ==================================================
  代码部分:
  ==================================================



1 #python json
2
3 #Author   :   Hongten
4 #Mailto   :   hongtenzone@foxmail.com
5 #Blog   :   http://www.iyunv.com/hongten
6 #QQ       :   648719819
7 #Version:   1.0
8 #Create   :   2013-08-29
9
10 import json
11
12 __doc__ = '''
13   JSON(JavaScript Object Notation)是一种轻量级的数据交换
14   格式。易于人阅读和编写,同时也易于机器解析和生成。
15
16   在python中,json模块提供的dumps()方法可以对简单的数据进行编码:
17   import json
18   
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", , {"name": "hongten"}]
27
28   objA =
29   encodedjsonA = json.dumps(objA)
30   print(repr(objA))
31   print(encodedjsonA)
32
33   #输出:
34   #
35   #
36
37   在json的编码过程中,会存在从python原始类型向json类型的转换过程,具体的转换
38   如下:
39
40         python      -->         json
41         dict                      object
42         list,tuple                array
43         str,unicode               string
44         int,long,float            number
45         True                      true
46         False                     false
47         None                      null
48
49   json转换为python数据类型:
50   import json
51   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   #hongten
60   #"hongten"
61   #hongten
62   
63   而json转换为python类型的时候,调用的是json.loads()方法,按照如下规则转换的:
64
65         json      -->         python
66         object                  dict
67         array                     list
68         string                  str
69         number(int)               int
70         number(real)            float
71         true                      True
72         false                     False
73         null                      None
74
75   排序功能使得存储的数据更加有利于观察,也使得对json输出的对象进行比较:
76   import json
77   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   #False
93   #True
94
95   indent参数是缩进的意思:
96   import json
97   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", , {"name": "hongten"}]
123
124
125 objA =
126 encodedjsonA = json.dumps(objA)
127 print(repr(objA))
128 print(encodedjsonA)
129
130 #
131 #
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 #}
  参考资料:
  http://www.iyunv.com/coser/archive/2011/12/14/2287739.html
页: [1]
查看完整版本: python开发_json_一种轻量级的数据交换格式