将 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数组列表转换为数据框中的列

将 java 数据列表转换为 JSON 数组数组

如何将 JSON 字符串转换为 JSON 数组列表? [复制]

Swifty JSON:将 JSON 数组中的对象分层列表转换为分层 Swift 对象

Python:将字典列表转换为 json