json是一个字符串,’{ “firstName”:“John” , “lastName”:“Doe” }’,相当于把一个字典dict放到两个引号’'中间,就成为一个json字符串,使用eval可以将其转化为字典
>>> import json
>>> s='{ "firstName":"John" , "lastName":"Doe" }'
>>> print(type(s))
<class 'str'>
>>> print(eval(s))
{'lastName': 'Doe', 'firstName': 'John'}
>>> type(eval(s))
<class 'dict'>
json.dumps(‘json_str’):将json字符串转化为字典
json.loads(dict):将字典转化为json字符串
import json
d={"a":1,"name":"zhangsan"}
print(type(d)
print(json.dumps(d))
print(d)
print(type(json.dumps(d)))
print(json.dumps(d))
print(json.loads(json.dumps(d)))
>>> data = [ { 'a':'A', 'x':(2, 4), 'c':3.0,"b":"4" },]
>>> print(json.dumps(data))
[{"a": "A", "x": [2, 4], "c": 3.0, "b": "4"}]
>>> print(json.dumps(data, sort_keys=True))
[{"a": "A", "b": "4", "c": 3.0, "x": [2, 4]}]
>>> print(json.dumps(data, sort_keys=True, indent=3)) #indent=3以3个空格缩进
去掉编码后的json串中,和:后面的空格
>>> data = [{"a": "A", "b": [2, 4], "c": 3.0}]
>>> print(json.dumps(data, separators=(',',':')))
[{"c":3.0,"a":"A","b":[2,4]}]
>>> print(json.dumps(data))
[{"c": 3.0, "a": "A", "b": [2, 4]}]
skipkeys=True时,允许dumps的数据不为str类型
import json
data= [ { 'a':'A', 'b':(2, 4), 'c':3.0, (1,2):'D tuple' } ]
print("不设置skipkeys 参数")
#不设置skipkeys 参数
try:
res1 = json.dumps(data) #skipkeys参数默认为False时
except Exception as e:
print(e)
import json
data= [ { 'a':'A', 'b':(2, 4), 'c':3.0, (1,2):'D tuple' } ]
print("设置skipkeys 参数")
#设置skipkeys 参数
print(json.dumps(data, skipkeys=True))# skipkeys=True时
将json字符串的值传入类中创建类实例
import json
class Employee(object):
def __init__(self, name, age, sex, tel):
self.name = name
self.age = age
self.sex = sex
self.tel = tel
def jsonToClass(emp):
return Employee(emp['name'], emp['age'], emp['sex'], emp['tel'])
#emp = Employee('Lily', 24, 'female', '18223423423')
json_str = '{"name": "Lucy", "age": 21, "sex": "female", "tel": "15834560985"}'
e = json.loads(json_str, object_hook = jsonToClass)
print(e)
print(e.name)