python编程 之 json包

1,json是什么?

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写。

我的理解就是:json是一种统一的格式化的文件,比如,一个json里放着n行,每行是一个字典,字典里存放着字段。

2,json.dumps

作用:用于将 Python 对象编码成 JSON 字符串。

语法:json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None,

encoding="utf-8", default=None, sort_keys=False, **kw)    #括号中是其内部自定义的参数和参数的默认值

基本用法:

import json

data=[{'a':1,'b':2,'c':3}]
json=json.dumps(data)    #encode the data
print json,type(json)

#结果是[{"a": 1, "c": 3, "b": 2}]  <type 'str'>    #很神奇,结果是字符串格式的

带参数用法:

import json

data=[{'a':1,'b':2,'c':3,'d':4}]
jsondata=json.dumps(data,sort_keys=True,indent=5,separators=(',',':'))
print jsondata,type(jsondata)

    sort_keys:编码成json的时候,是否按照键来排序。

    indent:输出的时候每行数据缩进5个空格

    separators:指定键值对的分隔符是逗号,键和值的分隔符是冒号

    Skipkeys:默认值是False,如果dict的keys内的数据不是python的基本类型(str,unicode,int,long,float,bool,None),设置为False时,就会报TypeError的错误。此时设置成True,则会跳过这类key

    ensure_ascii:默认值True,如果dict内含有non-ASCII的字符,则会类似uXXXX的显示数据,设置成False后,就能正常显示

    encoding:默认是UTF-8,设置json数据的编码方式。

    sort_keys:将数据根据keys的值进行排序。

python转json数据类型:

3 json.loads

作用:json.loads 用于解码 JSON 数据。该函数返回 Python 字段的数据类型。    

语法:json.loads(s[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])

简单实例:(接上文实验)

#jsondata等于[{"a":1,"b":2,"c":3,"d":4,"e":"5"}],是用dumps转化而来

pythondata=json.loads(jsondata)
print pythondata,type(pythondata)

#结果是:[{u'a': 1, u'c': 3, u'b': 2, u'e': u'5', u'd': 4}] <type 'list'>

 json转python数据类型:

4,实例

  1. json.dumps()函数是将一个Python数据类变成json格式的编码
  2. json.loads()函数是将json格式数据转换为想要的python格式
import json
def store(data):
    with open('data.json', 'w') as fw:
        #将字典转化为字符串
        json_str = json.dumps(data)    #python变成json
        fw.write(json_str)    #写到文件中
        #上面两句等同于下面这句
        # json.dump(data,fw)     #区分dump和dumps

def load():
    with open('data.json','r') as f:    #文件源
        data = json.load(f)    #json变成python
        return data


if __name__ == "__main__":
    json_data = '{"login":[{"username":"aa","password":"001"},{"username":"bb","password":"002"}],"register":[{"username":"cc","password":"003"},{"username":"dd","password":"004"}]}'
    # 函数是将json格式数据转换为字典
    data = json.loads(json_data)
    store(data)    #调用第一个函数,把python编程变成json

    data = load()    #调用第二函数:把刚刚成了的json的再变回python
    print(data)
原文地址:https://www.cnblogs.com/0-lingdu/p/9561479.html