用python对象构建JSON文件

时间:2017-04-20 03:00:01

标签: python json mongodb

我在使用相当复杂的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,并且非常感谢任何帮助!

提前感谢。

1 个答案:

答案 0 :(得分:2)

您只需要使用json模块转储对象的__dict__属性。这句话是因为你正在使用像字典这样的对象,其属性为" keys"并为他们分配"值"。

假设你的类是正确构建的(只有复制并粘贴错误到SO)并且recipeRecipe的实例,你可以像这样转储到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)) 

试一试:https://repl.it/HRSK/0