Как распечатать конкретный элемент c из файла JSON в python - PullRequest
1 голос
/ 28 мая 2020

Я хочу напечатать пользователя из списка JSON в Python, который я выбрал, однако я могу распечатать только всех пользователей. Как напечатать определенного c пользователя? На данный момент у меня есть это, которое выводит всех пользователей в уродливом формате

import json

with open('Admin_sample.json') as f:
    admin_json = json.load(f)

print(admin_json['staff'])

Файл JSON выглядит так

{
"staff": [
    {
        "id": "DA7153",
        "name": [
            "Fran\u00c3\u00a7ois",
            "Ullman"
        ],
        "department": {
            "name": "Admin"
        },
        "server_admin": "true"
    },
    {
        "id": "DA7356",
        "name": [
            "Bob",
            "Johnson"
        ],
        "department": {
            "name": "Admin"
        },
        "server_admin": "false"
    },
],
"assets": [
    {
        "asset_name": "ENGAGED SLOTH",
        "asset_type": "File",
        "owner": "DA8333",
        "details": {
            "security": {
                "cia": [
                    "HIGH",
                    "INTERMEDIATE",
                    "LOW"
                ],
                "data_categories": {
                    "Personal": "true",
                    "Personal Sensitive": "true",
                    "Customer Sensitive": "true"
                }
            },
            "retention": 2
        },
        "file_type": "Document",
        "server": {
            "server_name": "ISOLATED UGUISU",
            "ip": [
                10,
                234,
                148,
                52
            ]
        }
    },
    {
        "asset_name": "ISOLATED VIPER",
        "asset_type": "File",
        "owner": "DA8262",
        "details": {
            "security": {
                "cia": [
                    "LOW",
                    "HIGH",
                    "LOW"
                ],
                "data_categories": {
                    "Personal": "false",
                    "Personal Sensitive": "false",
                    "Customer Sensitive": "true"
                }
            },
            "retention": 2
        },
    },
]

Я просто не могу с этим справиться . Любая помощь будет принята с благодарностью.

Спасибо.

Ответы [ 4 ]

1 голос
/ 28 мая 2020

Вам необходимо проиндексировать список staff, например:

print(admin_json['staff'][0])

Я предлагаю немного прочитать в словарях в Python. Значения словаря могут быть установлены для любого объекта: в этом случае значение ключа staff устанавливается в список dicts. Вот пример, который пропустит oop через всех сотрудников и напечатает их имена:

staff_list = admin_json['staff']
for person in staff_list:
    name_parts = person['name']
    full_name = ' '.join(name_parts)  # combine name parts into a string
    print(full_name)
0 голосов
/ 28 мая 2020

У вас есть два списка в этом JSON файле. Когда вы попытаетесь его разобрать, вы увидите список. Например, получение первого идентификатора персонала:

print(admin_json['staff'][0]['id'])

Будет напечатано:

DA7153

Когда вы используете «json .loads», это просто преобразует файл JSON в Python словарь. Для дополнительной информации: https://docs.python.org/3/tutorial/datastructures.html#dictionaries

0 голосов
/ 28 мая 2020

Вы можете перечислить все имена пользователей с помощью

users = [user["name"] for user in admin_json['staff']]

0 голосов
/ 28 мая 2020

Попробуйте что-то вроде этого:

import json

def findStaffWithId(allStaff, id):
    for staff in allStaff:
        if staff["id"] == id:
            return staff
    return {}  # no staff found

with open('Admin_sample.json') as f:
    admin_json = json.load(f)

print(findStaffWithId(admin_json['staff'], "DA7356"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...