Вопрос с извлечением данных из Json с использованием Python - PullRequest
0 голосов
/ 07 февраля 2019

Я создаю игру для ботов для моих друзей в LINE.Я начинающий кодер.Я пытаюсь вызвать объект в JSON, который включает в себя строку + целое число.Я огляделся, но, кажется, ничто не соответствует тому, что мне нужно.Какое было бы лучшее / простое решение?

Мой код любительский, пожалуйста, будьте осторожны со мной.: P Я пытаюсь извлечь Python через Json, "Name" + "Stat".Прямо сейчас он извлекает только «Имя» и случайным образом выбирает элемент.Есть ли способ выбрать элемент + статистику, отобразить элемент и вычислить статистику?Благодарю.

Python 3:
if text == 'FIGHT':
    with open('items.json', 'r') as f:
        data = json.load(f)
        armor1 = [v for d in data['armor'] for k,v in d.items() if k == 'name']
        weapon1 = [v for d in data['weapon'] for k,v in d.items() if k == 'name']
        magic1 = [v for d in data['magic'] for k,v in d.items() if k == 'name']
        armor2 = random.choice(armor1)
        weapon2 = random.choice(weapon1)
        magic2 = random.choice(magic1)
        calc = add(int(armor2), int(weapon2), int(magic2))
        line_bot_api.reply_message(
            event.reply_token, 
                TextSendMessage('Armor = ' + (armor2)),
                TextSendMessage('Weapon = ' + (weapon2)),
                TextSendMessage('Magic = ' + (magic2)),
                TextSendMessage('You have a score of ' + str(calc) + '.'),
                TextSendMessage('Waiting for next opponent...')
        )
Json:
"armor": [
{
    "name":"Cardboard armor 10 DEF" ,
    "stats":"10" },
{
    "name":"Plastic armor 20 DEF" ,
    "stats":"20" },
{
    "name":"Rubber armor 30 DEF" ,
    "stats":"30" },
{
    "name":"Metal armor 40 DEF" ,
    "stats":"40" },
{
    "name":"Indestructable armor 50 DEF" ,
    "stats":"50" }
],

1 Ответ

0 голосов
/ 08 февраля 2019

После попытки почти всего .. Решение было:

if text == 'FIGHT':
    with open('items.json', 'r') as f:
        data = json.load(f)
        armor2 = random.choice(data['armor'])
        weapon2 = random.choice(data['weapon'])
        magic2 = random.choice(data['magic'])
        calc = add(armor2['stats'], weapon2['stats'], magic2['stats'])
        line_bot_api.reply_message(
            event.reply_token, [
                TextSendMessage('Armor = ' + (armor2['name'])),
                TextSendMessage('Weapon = ' + (weapon2['name'])),
                TextSendMessage('Magic = ' + (magic2['name'])),                 
                TextSendMessage('Total = ' + str(calc) + '.')
            ]
        )

Спасибо всем и особая благодарность моему другу Сае, который помог мне.:)

...