Я получаю TypeError при попытке напечатать значение, загруженное из файла json

#python #python-3.x

#python #python-3.x

Вопрос:

Я получаю TypeError при попытке напечатать значение из файла json с использованием python.

Я пытаюсь извлечь один элемент из хобби в файле json ниже

 {"name": "Jason",
"hobbies": ["music", "programming", "games"],
"job": "Software Developer"}
  

Используя следующий код

 import json
with open('input.json', 'r') as input:
    obj = json.load(input)
    print('Hello, '   obj['hobbies'])
  

Я получаю следующую ошибку, не уверен, как извлечь из списка

Ошибка типа: может только объединить str (не «список») в str

буду признателен за любую помощь

Комментарии:

1. obj['hobbies'] это список, который вы пытаетесь объединить с str. «Я пытаюсь извлечь один элемент из хобби» является расплывчатым. Какой элемент?

2. Какое хобби вы ищете? В настоящее время вы пытаетесь объединить музыку, программирование и игры в строку, которая не разрешена. Для этого вам нужно проиндексировать этот объект в определенном элементе

3. Привет, Остин, я пытаюсь восстановить музыку

4. Итак obj['hobbies'][0] , тогда?

5. большое вам спасибо за вашу помощь

Ответ №1:

это сработает:

 import json
with open('input.json', 'r') as input:
    obj = json.load(input)
    #make it a string
    print('Hello, '   str(obj['hobbies']))
  

что вам нужно сделать, так это преобразовать его в строку.
это то, что делает str

это для одного элемента:

 import json
with open('input.json', 'r') as input:
    obj = json.load(input)
    #make it a string the item is the first one
    print('Hello, '   str(obj['hobbies'][0]))
  

Комментарии:

1. Приветствую Matthijs990, который отлично сработал, какой код, если я просто хочу показать одно из увлечений, пожалуйста?

2. что-то вроде этого выполнит эту работу

Ответ №2:

Ответ соответствует измененному вопросу в соответствии с комментариями. Вы должны это изменить:

 import json
with open('input.json', 'r') as input:
    obj = json.load(input)
    print('Hello,', obj['hobbies'][0])
  

Использование запятой приведет к автоматическому преобразованию объекта в строку, или, как сказал Matthijs990, сначала просто преобразуйте объект в строку, однако это менее pythonyc

 print('Hello, '   str(obj['hobbies'][0]))
  

Комментарии:

1. Большое вам спасибо за вашу помощь

2. На этом веб-сайте принято повышать рейтинг решений, которые помогут вам, а затем отмечать одно из них как то, которое решило проблему, как «принятое решение»