Python中json的使用方法

        Json,全名 JavaScript Object Notation,是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。Python2.6 以上版本支持Json的编码和解码,支持python的大部分内置类型与Json进行转换。Python2.6之前的版本需要单独安装json后才能使用。

        Json只能序列化最基本的数据类型,josn只能把常用的数据类型序列化(列表、字典、列表、字符串、数字、),比如日期格式、类对象!josn就不行了。而pickle可以序列化所有的数据类型,包括类,函数都可以序列化。Json模块提供了四个功能:dumps、dump、loads、load。

json dumps把数据类型转换成字符串。

dump把数据类型转换成字符串并存储在文件中。 

loads把字符串转换成数据类型。  

load把文件打开从字符串转换成数据类型。

        一、encode过程:

        1)Serialize ``obj`` as a JSON formatted stream to ``fp`` (a
        ``.write()``-supporting file-like object).

 

dump(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)

        2)Serialize ``obj`` to a JSON formatted ``str``.

 

 

dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)

 

Skipkeys:默认值是False,如果dict的keys内的数据不是python的基本类型(str,unicode,int,long,float,bool,None),设置为False时,就会报TypeError的错误。此时设置成True,则会跳过这类key。
ensure_ascii:默认值True,如果dict内含有non-ASCII的字符,则会类似\uXXXX的显示数据,设置成False后,就能正常显示。
indent:是一个非负的整型,如果是0,或者为空,则一行显示数据,否则会换行且按照indent的数量显示前面的空白,这样打印出来的json数据也叫pretty-printed json
separators:分隔符,实际上是(item_separator, dict_separator)的一个元组,默认的就是(',',':');这表示dictionary内keys之间用“,”隔开,而KEY和value之间用“:”隔开。
encoding:默认是UTF-8,设置json数据的编码方式。
sort_keys:将数据根据keys的值进行排序。

        

e.g:

dumps:将python中的 字典 转换为 字符串:

>>> #coding:gbk
>>> 
>>> import json
>>> dic = {'name':'小明','ID':'000001','grade':'四年级','age':'11'}
>>> print(dic)
{'name': '小明', 'grade': '四年级', 'ID': '000001', 'age': '11'}
>>> json1 = json.dumps(dic)
>>> print(json1)
{"name": "\u5c0f\u660e", "grade": "\u56db\u5e74\u7ea7", "ID": "000001", "age": "11"}
>>> json2 = json.dumps(dic,ensure_ascii = False,indent = 4)
>>> print(json2)
{
    "name": "小明",
    "grade": "四年级",
    "ID": "000001",
    "age": "11"
}
>>> 

dump: 将数据写入json文件中

>>> import json
>>> dic = {'name':'小明','ID':'000001','grade':'四年级','age':'11'}
>>> print(dic)
{'name': '小明', 'ID': '000001', 'grade': '四年级', 'age': '11'}
>>> type(dic)
<class 'dict'>
>>> with open("F:\\PYTHON\\Python Developing\\test.json","a") as f:
	json.dump(dic,f)
	print("test.json写入完成。")

	
test.json写入完成。


        2、decode过程。

 

        1)Deserialize ``fp`` (a ``.read()``-supporting file-like object containing
        a JSON document) to a Python object.

 

load(fp, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)

        2)Deserialize ``s`` (a ``str`` instance containing a JSON
        document) to a Python object.

 

loads(s, encoding=None, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)

 

e.g:

loads: 将 字符串 转换为 字典

>>> type(json2)
<class 'str'>
>>> type(dic)
<class 'dict'>
>>> pyth1 = json.loads(json2)
>>> print(pyth1)
{'name': '小明', 'grade': '四年级', 'ID': '000001', 'age': '11'}
>>> type(pyth1)
<class 'dict'>
>>> 

load:把文件打开,并把字符串变换为数据类型

>>> 
>>> with open("F:\\PYTHON\\Python Developing\\test.json","r") as read_f:
	ret = json.load(read_f)
	type(ret)
	print(ret)

	
<class 'dict'>
{'name': '小明', 'ID': '000001', 'grade': '四年级', 'age': '11'}
>>> 

 

 

 

 

 

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值