Вложенный Json, оптимизировать с помощью Python Recursion? - PullRequest
0 голосов
/ 13 февраля 2019

Огромное спасибо за тех, кто помог с Как извлечь значения из вложенного массива JSON с помощью pandas .

Мой босс был доволен результатами, и я смог оптимизироватьнемного кода для получения более подробной информации:

Политики- "описание" и "группы"

элементы политики - "пользователи" и "значения базы данных"

ФАЙЛ JSON - https://pastebin.com/hv8mLfgx

import pandas as pd
from pandas.io.json import json_normalize as Jnormal
import json
import pprint, csv

with open(r"C:\\Users\Jaz\Documents\Python\JSON Parse\Modded2.json") as file:
    json_data = json.load(file)
    with open("RangerFinal.csv", 'w', newline='') as fd:

        wr = csv.writer(fd)
        wr.writerow(('Database name', 'Users', 'Description', 'Table', 'Users'))
        for policy in json_data['policies']:
            desc = policy['description']
            db_values = policy['resources']['database']['values']
            db_tables = policy['resources']['table']['values']
           # db_Groups = policy['policyItems']['groups']

            for item in policy['policyItems']:
                users = item['groups']
                for user in users:
                    for db in db_values:
                        for dbT in db_tables:
                            #for usrGrp in db_Groups:
                             use = item['users']
                             for ppl in use:
                                 _ = wr.writerow((db, user, desc, dbT, ppl)) 
                        #elif db == " ":

Ожидаемый результат от панд:

Expected Output

Один из друзей упомянул об использовании рекурсии и сопоставления, чтобы избежатьthe NestedLoops. Я новичок в Python, поэтому я посмотрел на рекурсию, но не смог ее понять.Кто-нибудь захочет помочь мне понять, как пройти через JSON Tree с помощью рекурсии?

Мне действительно нужно избегать полагаться на циклы Nested FOR и IF все время.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...