Convert JSON array to Python list

Question:

import json

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

That is my JSON array, but I would want to convert all the values in the 'fruits' string to a Python list. What would be the correct way of doing this?

Asked By: user1447941

||

Answers:

import json

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

You had everything you needed. data will be a dict, and data['fruits'] will be a list

Answered By: jdi

Tested on Ideone.


import json
array = '{"fruits": ["apple", "banana", "orange"]}'
data  = json.loads(array)
fruits_list = data['fruits']
print fruits_list
Answered By: Sagar Hatekar

data will return you a string representation of a list, but it is actually still a string. Just check the type of data with type(data). That means if you try using indexing on this string representation of a list as such data['fruits'][0], it will return you "[" as it is the first character of data['fruits']

You can do json.loads(data['fruits']) to convert it back to a Python list so that you can interact with regular list indexing. There are 2 other ways you can convert it back to a Python list suggested here

Answered By: noobprogrammer

ast.literal_eval() from the Python standard library ast may be used to parse json strings as well.

It’s especially useful if the string looks like a json but is actually a string representation of a Python object. In such cases, json.loads won’t work but ast.literal_eval works.

import ast
array = '{"fruits": ("apple", "banana", "orange")}'
a = ast.literal_eval(array)  # {'fruits': ('apple', 'banana', 'orange')}
j = json.loads(array)        # JSONDecodeError
Answered By: cottontail
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.