【问题标题】:Convert JSON array to Python list将 JSON 数组转换为 Python 列表
【发布时间】: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

标签: python json 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
    

    【讨论】:

      猜你喜欢
      • 2021-10-18
      • 2013-08-22
      • 1970-01-01
      • 2022-09-24
      • 2012-07-03
      • 1970-01-01
      • 2019-01-23
      • 1970-01-01
      • 2012-04-03
      相关资源
      最近更新 更多