Как создать / добавить в массив json объектов из уже существующего списка (связанный с discord.py)? - PullRequest
0 голосов
/ 13 апреля 2020

Трудно сформулировать первоначальный вопрос.

Я работаю с discord.py и хочу в основном go просмотреть весь список участников на моем сервере и добавить их имя вместе с число как объект в файле json.

Так что это будет что-то вроде

for member in ctx.message.guild.members:

    *add member.name*
    *add skill level 0*  

И результат в файле json будет

[{
   Name: Plzwork
   SkillLevel: 5
},
{
   Name: Blah
   SkillLevel: 5
},

и так далее ... Я пытался найти это, но, по моему мнению, нет прямого ответа.

Также с другой стороны, как вы выполняете итерацию обратно через теперь созданный массив json и читать имя как строку в python и уровень навыка как int?

1 Ответ

0 голосов
/ 13 апреля 2020

Вы бы сделали что-то вроде этого

import json
memberList = []
for member in ctx.message.guild.members:
    memberList.append({'name': member.name, 'skillLevel': member.skillLevel})
print(json.dumps(memberList))

Я не знаю, является ли это правильным способом ссылки на член skillLevel. Это всего лишь руководство.

Альтернативный однострочный, использующий понимание списка, будет таким:

import json
result = json.dumps([{'name': x.name, 'skillLevel': x.skillLevel} for x in members])
print(result)

Чтобы перебрать json, вы должны преобразовать его из json строка для объекта с использованием

parsed = json.loads(result)
for member in parsed:
    print(member['name'] + " " + str(member['skillLevel']))

Опять же, однострочник, использующий понимание списка, выглядит следующим образом

parsed = json.loads(result)
[print(member['name'] + " " + str(member['skillLevel'])) for member in parsed]
...