将 JSON 数组转换为 Python 列表
Posted
技术标签:
【中文标题】将 JSON 数组转换为 Python 列表【英文标题】:Convert JSON array to Python list 【发布时间】:2012-06-13 23:23:59 【问题描述】:import json
array = '"fruits": ["apple", "banana", "orange"]'
data = json.loads(array)
这是我的 JSON 数组,但我想将 fruits 字符串中的所有值转换为 Python 列表。这样做的正确方法是什么?
【问题讨论】:
什么意思?data['fruits']
将是一个列表
你有一个 JSON Object 包含一个 Array。 JSON 数组与 Python list
同源。 JSON Object 与 Python dict
同源。从技术上讲,您有一个 dict
包含一个键值对,其中值是字符串的 list
。
【参考方案1】:
data
将返回一个列表的字符串表示,但它实际上仍然是一个字符串。只需使用type(data)
检查data
的类型。这意味着如果您尝试对列表的此字符串表示形式使用索引,例如 data['fruits'][0]
,它将返回“[”,因为它是 data['fruits']
的第一个字符
您可以通过json.loads(data['fruits'])
将其转换回 Python 列表,以便您可以与常规列表索引进行交互。还有其他 2 种方法可以将其转换回建议的 Python 列表 here
【讨论】:
【参考方案2】: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']
将是一个列表
【讨论】:
哦,对了。我认为这只会从对象中获取单个字符串,而不是数组。谢谢! @user1447941:没问题。解码器会将所有 json 对象转换为它们的 python 内置对应对象。 你的意思是' print (data['fruits']) ',因为你的代码只适用于我的数据周围的 () :) @MaartenOlijve 此代码于 2014 年在 python 2.7 上编写。我认为您正在使用 python 3 进行测试,其中 print 现在是一个函数调用。 @shashikantkuswaha 这是4年前在python2上写的,原生字符串格式是ascii。 Unicode 是一种不同的类型,Unicode 文字写成 u'foo'。如果您只使用过 python3,那么您将看不到该样式,因为所有字符串都是本机 Unicode。【参考方案3】:Tested on Ideone.
import json
array = '"fruits": ["apple", "banana", "orange"]'
data = json.loads(array)
fruits_list = data['fruits']
print fruits_list
【讨论】:
以上是关于将 JSON 数组转换为 Python 列表的主要内容,如果未能解决你的问题,请参考以下文章
将 numpy 数组列表转换为 json 以从烧瓶 api 返回
如何使用pyspark将具有多个可能值的Json数组列表转换为数据框中的列
如何将 JSON 字符串转换为 JSON 数组列表? [复制]