import json data = '{"menu":[{"only_menu_item":false,"item_order":0,"layer":0,"app_name":"Tanımlama Menüsü","app_description":"Tanımlama Menüsü","app_path":"","uu_id":"166d9a3f-495e-4261-baab-dd456e9d294b","app_parent_items_id":null,"after_separator":false,"row_limit":100,"read":true,"write":false,"delete":false,"report_print":false,"report_export":false,"program_name":"APP166d9a3f495e4261baabdd456e9d294b"},{"only_menu_item":false,"item_order":10,"layer":1,"app_name":"Firma İşlemleri","app_description":"Firma İşlemleri","app_path":"","uu_id":"d1aa4365-b1ef-4c91-ac8e-e3289f7eb075","app_parent_items_id":"166d9a3f-495e-4261-baab-dd456e9d294b","after_separator":false,"row_limit":100,"read":true,"write":false,"delete":false,"report_print":false,"report_export":false,"program_name":"APPd1aa4365b1ef4c91ac8ee3289f7eb075"},{"only_menu_item":true,"item_order":20,"layer":2,"app_name":"Firma Tanımlama","app_description":"Firma Tanımlama","app_path":"create_company","uu_id":"a3c60a25-ff46-4872-b209-9e501dde7b73","app_parent_items_id":"d1aa4365-b1ef-4c91-ac8e-e3289f7eb075","after_separator":false,"row_limit":100,"read":true,"write":false,"delete":false,"report_print":false,"report_export":false,"program_name":"APPa3c60a25ff464872b2099e501dde7b73"},{"only_menu_item":false,"item_order":30,"layer":1,"app_name":"Personel İşlemleri","app_description":"Personel İşlemleri","app_path":"","uu_id":"eebb591d-842b-4495-8721-e09552665a06","app_parent_items_id":"166d9a3f-495e-4261-baab-dd456e9d294b","after_separator":false,"row_limit":100,"read":true,"write":false,"delete":false,"report_print":false,"report_export":false,"program_name":"APPeebb591d842b44958721e09552665a06"},{"only_menu_item":true,"item_order":40,"layer":2,"app_name":"Kişi Tanımlama","app_description":"Kişi Tanımlama","app_path":"create_person","uu_id":"0c6c8cd2-f6b7-471f-9671-5cc1ac9f502e","app_parent_items_id":"eebb591d-842b-4495-8721-e09552665a06","after_separator":false,"row_limit":100,"read":true,"write":false,"delete":false,"report_print":false,"report_export":false,"program_name":"APP0c6c8cd2f6b7471f96715cc1ac9f502e"},{"only_menu_item":false,"item_order":50,"layer":1,"app_name":"Bina İşlemleri","app_description":"Bina İşlemleri","app_path":"","uu_id":"66627ebb-0425-425f-bc0f-8a943eb0a3ca","app_parent_items_id":"166d9a3f-495e-4261-baab-dd456e9d294b","after_separator":false,"row_limit":100,"read":true,"write":false,"delete":false,"report_print":false,"report_export":false,"program_name":"APP66627ebb0425425fbc0f8a943eb0a3ca"},{"only_menu_item":true,"item_order":60,"layer":2,"app_name":"Bina ve bölüm tanımlama","app_description":"Bina ve bölüm tanımlama","app_path":"create_build","uu_id":"173c4d8e-5577-4d4d-8712-f6fa2fbc8019","app_parent_items_id":"66627ebb-0425-425f-bc0f-8a943eb0a3ca","after_separator":false,"row_limit":100,"read":true,"write":false,"delete":false,"report_print":false,"report_export":false,"program_name":"APP173c4d8e55774d4d8712f6fa2fbc8019"}]}' class Menu: def __init__(self, json_data): self.data = {} self.json = json_data self.app_name = None self.app_description = None self.app_path = None self.uu_id = None self.app_parent_items_id = None self.children = {} self.only_menu_item = None self.item_order = None self.layer = None self.before_separator = None self.row_limit = None self.read = None self.write = None self.delete = None self.report_print = None self.report_export = None self.program_name = None self.dct = {} self.import_data() def add_item( self, only_menu_item, item_order, layer, app_name, app_description, app_path, uu_id, app_parent_items_id, before_separator, row_limit, read, write, delete, report_print, report_export, program_name, ): self.app_name = app_name self.app_description = app_description self.app_path = app_path self.uu_id = uu_id self.app_parent_items_id = app_parent_items_id self.children = {} self.only_menu_item = only_menu_item self.item_order = item_order self.layer = layer self.before_separator = before_separator self.row_limit = row_limit self.read = read self.write = write self.delete = delete self.report_print = report_print self.report_export = report_export self.program_name = program_name self.dct = dict( app_parent_items_id=app_parent_items_id, uu_id=uu_id, app_name=app_name, children={}, app_path=app_path, app_description=app_description, only_menu_item=self.only_menu_item, item_order=self.item_order, layer=self.layer, before_separator=self.before_separator, row_limit=self.row_limit, read=self.read, write=self.write, delete=self.delete, report_print=self.report_print, report_export=self.report_export, program_name=self.program_name, ) xx = self.find_data(self.data, str(app_parent_items_id)) if not xx: self.data[self.uu_id] = self.dct else: xx["children"][self.uu_id] = self.dct # xx.self.children[self.uu_id] = self.dct # self.add_data(self.data, None) def find_data(self, search_data, find_text): if find_text is None: return None for x, y in search_data.items(): if x == find_text: print(find_text, " bulundu") # y["children"].append(self.dct) return y if "children" in y and len(y["children"]) > 0: ret = self.find_data(y["children"], find_text) if ret is not None: return ret return None @staticmethod def show_col(i, y): print( "layer :", i, " app_parent_items_id", y["app_parent_items_id"], "uu_id", y["uu_id"], "app_name", y["app_name"], "app_path", y["app_path"], "app_description", y["app_description"], "only_menu_item", y["only_menu_item"], "item_order", y["item_order"], "layer", y["layer"], "before_separator", y["before_separator"], "row_limit", y["row_limit"], "read", y["read"], "write", y["write"], "delete", y["delete"], "report_print", y["report_print"], "report_export", y["report_export"], "program_name", y["program_name"], ) def show_data(self): # print(self.data) for x, y in self.data.items(): self.show_col(0, y) if type(y) is dict: for a, b in y["children"].items(): self.show_col(1, b) if type(y) is dict: for c, d in b["children"].items(): self.show_col(2, d) if type(y) is dict: for e, f in d["children"].items(): self.show_col(3, f) # print("show Dat :", x, y) return self.data def import_data(self): if type(self.json) is str: print("string miş") self.json = json.loads(self.json) for item, value in self.json.items(): if type(value) is list: for x in range(len(value)): print(f"t:{type(value[x])} : {value[x]}") if type(value[x]) is list: print("list", x) if type(value[x]) is dict: print( value[x]["app_name"], value[x]["app_description"], value[x]["app_path"], value[x]["uu_id"], value[x]["app_parent_items_id"], [], value[x]["only_menu_item"], value[x]["item_order"], value[x]["layer"], value[x]["after_separator"], value[x]["row_limit"], value[x]["read"], value[x]["write"], value[x]["delete"], value[x]["report_print"], value[x]["report_export"], value[x]["program_name"], ) self.add_item( value[x]["only_menu_item"], value[x]["item_order"], value[x]["layer"], value[x]["app_name"], value[x]["app_description"], value[x]["app_path"], value[x]["uu_id"], value[x]["app_parent_items_id"], value[x]["after_separator"], value[x]["row_limit"], value[x]["read"], value[x]["write"], value[x]["delete"], value[x]["report_print"], value[x]["report_export"], value[x]["program_name"], ) # self.add_item(value[x]["app_name"], app_description, app_path, uu_id, app_parent_items_id): # self.app_name = app_name # for child in item.children: # print(f" - {child.app_name}") (0, [1, 3, 5]) (1, [2]) (3, [4]) (5, [6]) (4, [7]) menu = Menu(json.loads(data)) print("*" * 100) menu.show_data()