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

以下是我做的对于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.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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java初学

hashMap原理(java8)

37017
来自专栏王小雷

Python之NumPy实践之数组和矢量计算

Python之NumPy实践之数组和矢量计算 1. NumPy(Numerical Python)是高性能科学技术和数据分析的基础包。 2. NumPy的nda...

2468
来自专栏无所事事者爱嘲笑

js小题目(持续更新)

1714
来自专栏北京马哥教育

Python练手题,敢来挑战吗?

这到题用到了字符串的所有字母大写和所有字母小写和字符串拼接,复制,用到的函数有 json 将列表中的内容按照指定字符连接成一个字符串,

1040
来自专栏python3

python 生成器

第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator:

971
来自专栏noteless

[十一]基础数据类型之Character

该类提供了几种方法来确定字符的类别(小写字母、数字等),并将字符从大写转换为小写,反之亦然

841
来自专栏恰同学骚年

剑指Offer面试题:14.链表的倒数第k个节点

PS:这是一道出境率极高的题目,记得去年参加校园招聘时我看到了3次,但是每次写的都不完善。

1034
来自专栏chenjx85的技术专栏

leetcode-179-Largest Number(理解规则,自定义cmp函数进行排序)

1、这道题给定一个vector,里面存放着int类型的非负整数,要求把这些非负整数拼起来,尽可能拼成一个最大的整数。

1773
来自专栏JackeyGao的博客

Leetcode 算法 -4. Median of Two Sorted Arrays

解题思路: 先把列表碾平 , 由于两个列表元素类型相同直接相加即可. 然后排序. 计算中间位置, 可以通过判断奇偶数来分别处理开始index和结束index....

753
来自专栏racaljk

C语言中一些不被熟知的特性

限定词restricted用于限定一个指针(如名,告诉编译器该指针的内存访问在任何情况下都只能通过该指针进行,其余指向无效.如

1143

扫码关注云+社区

领取腾讯云代金券