python数据存储系列教程——python对象与json字符串的相互转化,json文件的存储与读取

全栈工程师开发手册 (作者:栾鹏)

python教程全解

在json字符串和python对象的相互转化中,会进行下列变换。

会将python中字典的写法,转化为js中对象的写法。(没有区别)。
会将python中列表的写法,转化为js中array的写法。(没有区别)
会将python中unicode的写法,转化为js中string的写法。(与编码有关)
会将python中的int,long的写法,转化为js中number的写法。(没有区别)
会将python中的True的写法,转化为js中true的写法。(写法有区别)
会将python中的False的写法,转化为js中false的写法。(写法有区别)
会将python中的None的写法,转化为js中null的写法。(写法有区别)

反过来也是对应转换。

js中类型           Python中类型

object              dict
array               list
string              unicode
number (int)        int, long
number (real)       float
true                True
false               False
null                None

python字典所有的键必须为字符串,值可以是任何对象。包括字典、列表、字符串、数值、布尔值以及null。

json库集成在了标准库中。使用import json即可引入。所以不用安装外部包。

python对象转化为json字符串、python对象存储成json文件

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)
  • dumps函数包含一些参数,可以使用参数让 JSON 数据格式化输出。

    sort_keys参数:是否对键值排序。sort_keys=True

    separators:分隔符。separators=(‘,’, ‘: ‘) 参数:两个键值对间的分隔符,键和值中间的分隔符

    indent:缩进字符数。indent=10

    encoding:编码类型。encoding=”utf-8”

json.dump 将 Python 对象存储成 JSON文件

json.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)

测试用例。运行环境python3.6

import json
myobject = {
    'key2': {
        'key31': None,
        'key32': False,
        'key33': 13.6,
    },
    'key1': {
        'key22': ['value22_1', 'value22_2']
    }
}

#将对象或对象数组转化为json字符串
jsonstr =json.dumps(myobject, indent=4,sort_keys=True)
print(jsonstr)

#python对象或对象数组写入json文件:方法1
with open('data.json', 'w') as f:
    json.dump(myobject, f)

#python对象或对象数组写入json文件:方法2
import io
f=io.open('data1.json', 'w', encoding='utf-8')
json.dump(myobject, f, ensure_ascii=False)

注意:测试发现,使用str(dict),转化为字符串为单引号,使用json.dumps转化为字符串为双引号

json字符串转化为python对象,python读取json文件

json.loads 将已编码的 JSON 字符串解码为 Python 对象

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

json.load 将已编码的 JSON 文件解码为 Python 对象

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

测试用例。运行环境python3.6

#coding:utf-8
import json
#将json字符串转化为对象或对象数组
jsonstr = '{"key2": {"key31": null, "key32": false, "key33": 13.6}, "key1": {"key22": ["value22_1", "value22_2"]}}'
obj = json.loads(jsonstr)
print(obj)

#读取json文件转换成python对象或对象数组:方法1
with open('data1.json', 'r') as f:
    obj = json.load(f)
    print(obj)

#读取json文件转换成python对象或对象数组:方法2
import io
f = io.open('data1.json', 'r', encoding='utf-8')
json_str = f.readline()   #读取文件内容
obj = json.loads(json_str)  #将json字符串转化为对象
print(obj)

你可能感兴趣的:(python大数据,网络爬虫,python大数据)