![](https://i-blog.csdnimg.cn/blog_migrate/11ab61846568f7310c1fec6b75306fcd.jpeg)
全栈工程师开发手册 (作者:栾鹏)
在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)