Python中内置了json库,用起来超级方便,json现在以成为开发的必备。
python对象到json字符串的转换规则:
Python | JSON |
---|---|
dict | object |
list, tuple | array |
str, unicode | string |
int, long, float | number |
True | true |
False | false |
None | null |
json字符串到python对象的转换规则:
JSON | Python |
---|---|
object | dict |
array | list |
string | unicode |
number (int) | int, long |
number (real) | float |
true True | |
false | False |
null | None |
json的api有下面4个:
注意:dict也可以是类对象
dict转换为json
import json person = { 'name': 'jack', 'age': 15, 'email': 'jack@litets.com' } print('dict:', person) person_json = json.dumps(person) # 转换为json print('json:', person_json)
输出:
dict: {'name': 'jack', 'age': 15, 'email': 'jack@litets.com'}
json: {"name": "jack", "age": 15, "email": "jack@litets.com"}
json转换为dict
import json person_dict = json.loads('{"name": "jack", "age": 15, "email": "jack@litets.com"}') print('person dict:', person_dict)
输出:
person dict: {'name': 'jack', 'age': 15, 'email': 'jack@litets.com'}
类对象转换为json
import json class Person: def __init__(self, name, age, email): self.name = name self.age = age self.email = email person = Person('tom', 38, 'tom@litets.com') person_json = json.dumps(person.__dict__) print('person json:', person_json)
输出:
person json: {"name": "tom", "age": 38, "email": "tom@litets.com"}
json.dumps() 不能直接传递一个对象实例否则回报 TypeError: Object of type Person is not JSON serializable 错误 为了避免这个错误,我们需要修改:
import json class Person: def __init__(self, name, age, email): self.name = name self.age = age self.email = email # 将person转换为dict def convert2json(person): return { 'name': person.name, 'age': person.age, 'email': person.email } person = Person('tom', 38, 'tom@litets.com') # 第二个参数传递转换函数,或者使用default=lambda o: o.__dict__ person_json = json.dumps(person, default=convert2json) print('person json:', person_json)
json转换为类对象
import json class Person: def __init__(self, name, age, email): self.name = name self.age = age self.email = email def convert2json(dict_json): return Person(dict_json['name'], dict_json['age'], dict_json['email']) person = json.loads('{"name": "tom", "age": 38, "email": "tom@litets.com"}', object_hook=convert2json) print('person:', person)
输出:
person: <__main__.Person object at 0x10a7230b8>
loads函数只能将json转换为字典,需要我们自己转换为对象。
dict/对象转换为json文件
import person = {"name": "tom", "age": 38, "email": "tom@litets.com"} with open('person.json', 'w') as f: json.dump(person, f)
当前目录下会多一个person.json文件,内容是:
{"name": "tom", "age": 38, "email": "tom@litets.com"}
将json文件转换为dict/对象
import json with open('person.json', 'r') as f: print(json.load(f))
输出:
{'name': 'tom', 'age': 38, 'email': 'tom@litets.com'}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍Python转换itertools.chain对象为数组的方法,包括了Python转换itertools.chain对象为数组的方法的使用技巧和注意事项,需要的朋友参考一下 之前做1月总结的时候说过希望每天或者每2天开始的更新一些学习笔记,这是开始的第一篇。 这篇介绍的是如何把一个 itertools.chain 对象转换为一个数组。 参考 stackoverflow 上的一个回答:
问题内容: 我需要知道如何将动态python对象转换为JSON。该对象必须能够具有多个级别的对象子对象。例如: 使用python 2.6的以下代码: 产生以下错误: 我不知道用户可能放入哪种子对象。是否有足够聪明的解决方案来检测属性是否是对象并自动对其进行解析? 更新 为在上包含子对象。 问题答案: 指定参数(doc):
问题内容: 我有一个JSON对象,我将其转换为并在此处进行一些处理。稍后,我想转换相同的缓冲区数据以转换为有效的JSON对象。 我正在研究Node V6.9.1 下面是我尝试过的代码,但是当我转换回JSON却无法打开该对象时遇到了。 所以我尝试使用检查方式打印整个对象 如果我尝试像数组一样读取它 我也尝试解析它抛出 我需要将其视为我创建的真实对象(我的意思是像上面声明的那样)。 请帮忙.. 问题答
我正试图将下面的json转换成java bean,需要你的帮助 Sort.json 我的豆子看起来像 我的测试课是 我看到的错误是 请建议:
问题内容: 我将实例转换为JSON时遇到问题: 在我有一个实例列表。 返回,例如: 但是我只想要1个JSON字符串,列表中包含所有信息: 问题答案: 您可以使用列表推导生成字典列表,然后将其转换为: 或使用功能;将调用它无法序列化的任何内容: 后者适用于在结构的任何级别插入的对象,而不仅仅是在列表中。 就个人而言,我将使用棉花糖之类的项目来处理更复杂的事情。例如处理您的示例数据可以用
问题内容: 是否可以将json字符串(例如,从twitter搜索json服务返回的json字符串)转换为简单的字符串对象。这是从json服务返回的数据的一小部分表示形式: 可以说我以某种方式将结果存储在某个变量中,例如 obj 。我希望获得适当的值,如下所示: 我已经尝试过使用,但是它给了我一个错误提示 问题答案: 我已经尝试过使用,但是它给了我一个错误提示 要从字符串加载,请使用(注意“ s”)