我在使用相当复杂的python对象构建JSON文件时遇到了一些困难。
我尝试构建成JSON文件的类看起来像这样:
class Recipe:
def __ini__(self):
self.recipeTitle = ""
self.recipeDiscription = ""
self.recipeMetaData = []
self.reipeIngredients = collections.OrderedDict()
self.instructions = []
self.searchableIngredients = []
self.allIng = []
self.tags = []
self.ingredientMetadata = []
# self.getAllIngredients()
我尝试构建一个字典,其中键是属性的字符串名称,值是属性的内容。但是,json.dump()不喜欢列表,词典和字符串的字典。我是否需要手动创建用于填充JSON文件的逻辑,例如通过连接列表的所有内容并以独特方式分隔它来创建字符串,还是有更简单的方法将这样的对象转换为JSON? / p>
作为参考,填充的Recipe对象看起来像这样:
recipe.recipeTitle = "Pancakes"
recipe.recipeDiscription = "Something really tasty"
recipe.metaData = ["15 Minutes", "Serves 5"]
recipe.recipeIngredients = {('For the sauce', ['sugar', 'spice',
'everything nice']),('For the food', ['meat', 'fish', 'eggs'])}
recipe.instructions = ['First, stir really well', 'Second - fry']
self.allIng = ['sugar', 'spice', 'everything nice', 'meat', 'fish',
'eggs']
self.tags = [1252, 2352, 2174, 454]
self.ingredientMetadata = [1,17,23,55,153,352]
我试图将其转变为JSON,并且非常感谢任何帮助!
提前感谢。
答案 0 :(得分:2)
您只需要使用json
模块转储对象的__dict__
属性。这句话是因为你正在使用像字典这样的对象,其属性为" keys"并为他们分配"值"。
假设你的类是正确构建的(只有复制并粘贴错误到SO)并且recipe
是Recipe
的实例,你可以像这样转储到json:
import json
print(json.dumps(recipe.__dict__, indent = 4))
这是一个简单的工作示例:
import json
class foo:
def __init__(self):
self.spam = 123
self.egg = "this is a string"
self.apple = ["a list with", 3, "values"]
self.banana = {"dicts" : ["and nested list", "also works", 00]}
myfoo = foo()
print(json.dumps(myfoo.__dict__, indent = 4))