前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python开发_json_一种轻量级的数据交换格式

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

作者头像
Hongten
发布2018-09-13 12:10:01
3440
发布2018-09-13 12:10:01
举报
文章被收录于专栏:HongtenHongten

以下是我做的对于python中json模块的demo

运行效果:

代码语言:javascript
复制
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"
}
>>> 

==================================================

代码部分:

==================================================

代码语言:javascript
复制
  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 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.cnblogs.com/coser/archive/2011/12/14/2287739.html

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2013-08-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档