Перетворити масив JSON на список Python


79
import json

array = '{"fruits": ["apple", "banana", "orange"]}'
data  = json.loads(array)

Це мій масив JSON, але я хотів би перетворити всі значення в рядку фрукти в список Python. Яким був би правильний спосіб зробити це?


3
Що ви маєте на увазі? data['fruits']буде список
jdi

4
У вас є JSON об'єкт , що містить масив . Масив JSON є гомологічним Python list. Об'єкт JSON є гомологічним Python dict. Технічно у вас є одна dictпара ключ-значення, де значенням є listрядки.
Джоел Корнетт,

Відповіді:


125
import json

array = '{"fruits": ["apple", "banana", "orange"]}'
data  = json.loads(array)
print data['fruits']
# the print displays:
# [u'apple', u'banana', u'orange']

У вас було все, що вам потрібно. dataбуде диктом, і data['fruits']буде списком


1
О, справді. Я думав, що це захопить лише окремі рядки від об'єкта, а не масиви. Дякую!
user1447941

@ user1447941: Немає проблем. Декодер перекладе всі об'єкти json у вбудовані в пітон об'єкти-аналоги.
jdi

Ви мали на увазі "друк (дані ['фрукти'])", тому що ваш код працює лише з () навколо даних для мене :)
Маартен,

1
@MaartenOlijve цей код був написаний у 2014 році на python 2.7. Я вважаю, ви тестуєте за допомогою python 3, де друк тепер є викликом функції.
jdi

1
@shashikantkuswaha Це було написано понад 4 роки тому на python2, де рідним форматом рядків був ascii. Unicode був іншого типу, і літерал Unicode записується як u'foo '. Якщо ви коли-небудь використовували python3, тоді ви не побачите цього стилю, оскільки всі рядки є рідним Unicode.
jdi


0

dataповерне вам рядкове представлення списку, але насправді це все ще рядок. Просто перевірте тип за dataдопомогою type(data). Це означає, що якщо ви спробуєте використовувати індексацію в цьому рядковому поданні списку як такого data['fruits'][0], він поверне вам "[", оскільки це перший символdata['fruits']

Ви можете json.loads(data['fruits'])перетворити його назад у список Python, щоб ви могли взаємодіяти зі звичайним індексуванням списку. Існує ще 2 способи перетворити його назад у список Python, запропонований тут

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.