设为首页 收藏本站
查看: 1553|回复: 0

[经验分享] python开发_json_一种轻量级的数据交换格式

[复制链接]

尚未签到

发表于 2015-4-20 09:42:23 | 显示全部楼层 |阅读模式
  以下是我做的对于python中json模块的demo
  运行效果:



Python 3.3.2 (v3.3.2:d047928ae3f6, May 16 2013, 00:03:43) [MSC v.1600 32 bit (Intel)] 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", [88, 42, "hongten"], {"name": "hongten"}]

objA = [True, False, None]
encodedjsonA = json.dumps(objA)
print(repr(objA))
print(encodedjsonA)
#输出:
#[True, False, None]
#[true, false, null]

在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", [88, 42, "hongten"], {"name": "hongten"}]
[True, False, None]
[true, false, null]
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", [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      -->           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", [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 #}
  参考资料:
  http://www.iyunv.com/coser/archive/2011/12/14/2287739.html

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-58674-1-1.html 上篇帖子: 用python抓取oj题目(3)——django显示 下篇帖子: python开发_自己开发的一个小游戏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表