Как обрезать массив JSON, чтобы получить значение c - PullRequest
0 голосов
/ 01 февраля 2020

Итак, я использую Echo Arena API, который дает мне некоторые из следующих параметров в формате JSON. Я пытаюсь получить всех NAMES пользователей в матче в то время, как видно здесь, есть имя игрока: rnedds и еще дальше DarkCobra866. Как я могу получить только имена и никакой другой информации? Использование Python 3.

{
   "teams":[
      {
         "players":[
            {
               "name":"rnedds",
               "rhand":[
                  -3.3230002,
                  -1.2370001,
                  -18.701
               ],
               "playerid":0,
               "position":[
                  -2.7520001,
                  -0.96800005,
                  -18.622002
               ],
               "lhand":[
                  -2.414,
                  -1.5630001,
                  -18.487001
               ],
               "userid":1663152230440088,
               "stats":{ }
            },
            {
               "name":"DarkCobra866",
               "rhand":[
                  -5.3710003,
                  -1.978,
                  -7.5110002
               ],
               "playerid":4,
               "position":[
                  -5.5280004,
                  -1.3520001,
                  -7.4040003
               ],
               "lhand":[
                  -5.6520004,
                  -1.7540001,
                  -7.4020004
               ],
               "userid":2649496045086049,
               "stats":{ }
            }
         ]
      }
   ]
}

В настоящее время мой код выглядит следующим образом для получения дополнительной информации в API

 matchdetails = {
    'echosessionid' : data['sessionid'],
    'echoclientname' : data['client_name'],
    'echogameclockdisplay' : data['game_clock_display'],
    'echogamestatus' : data['game_status']
    }
    currentMatchDetails = json.dumps(matchdetails)

1 Ответ

3 голосов
/ 01 февраля 2020

Загрузите вашу JSON строку в словарь, например:

import json

json_text = '''
{
   "teams":[
      {
         "players":[
            {
               "name":"rnedds",
               "rhand":[
                  -3.3230002,
                  -1.2370001,
                  -18.701
               ],
               "playerid":0,
               "position":[
                  -2.7520001,
                  -0.96800005,
                  -18.622002
               ],
               "lhand":[
                  -2.414,
                  -1.5630001,
                  -18.487001
               ],
               "userid":1663152230440088,
               "stats":{ }
            },
            {
               "name":"DarkCobra866",
               "rhand":[
                  -5.3710003,
                  -1.978,
                  -7.5110002
               ],
               "playerid":4,
               "position":[
                  -5.5280004,
                  -1.3520001,
                  -7.4040003
               ],
               "lhand":[
                  -5.6520004,
                  -1.7540001,
                  -7.4020004
               ],
               "userid":2649496045086049,
               "stats":{ }
            }
         ]
      }
   ]
}
'''

data = json.loads(json_text)

players = [player['name'] for team in data['teams'] for player in team['players']]

print(players)

Приведенный выше код приведет к:

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