import json array = '{"fruits": ["apple", "banana", "orange"]}' data = json.loads(array)
这是我的JSON数组,但是我想把'fruits'字符串中的所有值转换成Python列表,正确的方法是什么?
'fruits'
whitzsjs1#
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']将是一个列表
data
data['fruits']
qoefvg9y2#
Tested on Ideone.
import json array = '{"fruits": ["apple", "banana", "orange"]}' data = json.loads(array) fruits_list = data['fruits'] print fruits_list
evrscar23#
data将返回列表的字符串表示,但它实际上仍然是一个字符串。只需使用type(data)检查data的类型。这意味着如果您尝试对列表的此字符串表示(如data['fruits'][0])使用索引,它将返回“[”,因为它是data['fruits']的第一个字符您可以执行json.loads(data['fruits'])将其转换回Python列表,以便与常规列表索引交互。还有另外两种方法可以将其转换回Python列表,建议使用here
type(data)
data['fruits'][0]
json.loads(data['fruits'])
3htmauhk4#
Python标准库ast中的ast.literal_eval()也可以用来解析json字符串。如果字符串看起来像一个json,但实际上是Python对象的字符串表示,那么json.loads就不起作用了,而ast.literal_eval可以。
ast
ast.literal_eval()
json.loads
ast.literal_eval
import ast array = '{"fruits": ("apple", "banana", "orange")}' a = ast.literal_eval(array) # {'fruits': ('apple', 'banana', 'orange')} j = json.loads(array) # JSONDecodeError
4条答案
按热度按时间whitzsjs1#
您已经拥有了所需的一切。
data
将是一个法令,而data['fruits']
将是一个列表qoefvg9y2#
Tested on Ideone.
evrscar23#
data
将返回列表的字符串表示,但它实际上仍然是一个字符串。只需使用type(data)
检查data
的类型。这意味着如果您尝试对列表的此字符串表示(如data['fruits'][0]
)使用索引,它将返回“[”,因为它是data['fruits']
的第一个字符您可以执行
json.loads(data['fruits'])
将其转换回Python列表,以便与常规列表索引交互。还有另外两种方法可以将其转换回Python列表,建议使用here3htmauhk4#
Python标准库
ast
中的ast.literal_eval()
也可以用来解析json字符串。如果字符串看起来像一个json,但实际上是Python对象的字符串表示,那么
json.loads
就不起作用了,而ast.literal_eval
可以。