2017-04-20 7 views
0

かなり複雑なPythonオブジェクトからJSONファイルを構築するのにはいくつかの困難があります。JSONファイルをPythonオブジェクトから構築する

私は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に変換する簡単な方法はありますか?

は参考までに、人口レシピオブジェクトは、次のようになります

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

オブジェクトの__dict__属性をダンプする場合は、jsonモジュールを使用するだけで済みます。この言葉は、辞書のような属性を「キー」として使用し、「値」を割り当てるためです。

あなたのクラスが正しく構築された(唯一のコピー&ペーストのエラー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

関連する問題