使用Python将现有字典转换为JSON

时间:2018-08-16 11:54:48

标签: python json django dictionary google-visualization

在我当前的django项目中,我建立了一个字典,其中有一个元组,其中包含有关给定团队的数据。团队由具有子角色并分配给该特定团队的资源组成。

现在的问题是,我需要将此字典转换为JSON格式,因为我想使用不同的Google图表来可视化数据,而且我不知道该怎么做。

这是字典中的一个例子:

{'Team Bobcat': {'Tom Bennett': {('Build Master', 50)}}
{'Team Coffe': {'Garfield Foster': {('Scrum Master', 100)}}

我认为我可能需要遍历字典并构建JSON的每个部分,但不确定如何做到这一点。 试图使用json.dumps(data),但是那只会给我一个错误,说“类型为'set'的对象不能json可序列化”,我在这篇文章中读到了一些东西: Serializable

有人可以给我任何建议吗?

3 个答案:

答案 0 :(得分:1)

希望这对您有帮助:

>>> a = {2: 3, 4: 5}
>>> a
{2: 3, 4: 5}
>>> type(a)
<class 'dict'>
>>> 
>>> b = {2, 3, 4, 5}
>>> b
{2, 3, 4, 5}
>>> type(b)
<class 'set'>
>>> 
>>> c = {7}
>>> c
{7}
>>> type(c)
<class 'set'>
>>> 
>>> d = {}
>>> d
{}
>>> type(d)
<class 'dict'>

换句话说,您可以根据自己写的内容在set的帮助下声明dict{}

在此处详细了解:https://docs.python.org/3/tutorial/datastructures.html

要使您的数据可序列化,请改用以下方法:

{'Team Bobcat': {'Tom Bennett': ['Build Master', 50]}}
{'Team Coffe': {'Garfield Foster': ['Scrum Master', 100]}}

示例:

>>> json.dumps({'Team Bobcat': {'Tom Bennett': ['Build Master', 50]}})
'{"Team Bobcat": {"Tom Bennett": ["Build Master", 50]}}'

答案 1 :(得分:1)

做这样的事情:

import json

data = {'Team Bobcat': {'Tom Bennett': {('Build Master', 50)}}
{'Team Coffee': {'Garfield Foster': {('Scrum Master', 100)}}

json_string = json.dumps(data)

答案 2 :(得分:0)

您可以使用JSONEncoder

import json 
class ComplexEncoder(json.JSONEncoder):
     def default(self, obj):
         if isinstance(obj, set):
             return [el for el in obj]
         return json.JSONEncoder.default(self, obj)

print(json.dumps({'Team Coffe': {'Garfield Foster': {('Scrum Master', 100)}}}, cls=ComplexEncoder))