python - 将多维 Json 数组解析为 Python

标签 python arrays json multidimensional-array

我头疼,第一次尝试解析 JSON 并处理多维数组。

{
  "secret": "[Hidden]",
  "minutes": 20,
  "link": "http:\/\/www.1.com",
  "bookmark_collection": {
    "free_link": {
      "name": "#free_link#",
      "bookmarks": [
        {
          "name": "1",
          "link": "http:\/\/www.1.com"
        },
        {
          "name": "2",
          "link": "http:\/\/2.dk"
        },
        {
          "name": "3",
          "link": "http:\/\/www.3.in"
        }
      ]
    },
    "boarding_pass": {
      "name": "Boarding Pass",
      "bookmarks": [
        {
          "name": "1",
          "link": "http:\/\/www.1.com\/"
        },
        {
          "name": "2",
          "link": "http:\/\/www.2.com\/"
        },
        {
          "name": "3",
          "link": "http:\/\/www.3.hk"
        }
      ]
    },
    "sublinks": {
      "name": "sublinks",
      "link": [
        "http:\/\/www.1.com",
        "http:\/\/www.2.com",
        "http:\/\/www.3.com"
      ]
    }
  }
}

这分为 3 个部分,第一个维度上的静态数据( secret 、分钟、链接),我需要将其作为单独的字符串获取。

然后我需要每个没有固定名称的“书签集合”的字典,所以我需要它们的名称以及每个书签的链接/名称。

然后是始终相同的单独子链接,我需要单独字典中的所有链接。

我正在阅读有关解析 JSON 的内容,但我发现的大部分内容都是放入 1 个字典中的简单数组。 有没有人有任何好的技术来做到这一点?

最佳答案

解析 JSON 后,您将得到一个 Python 字典。所以,假设上面的 JSON 在一个名为 input_data 的字符串中:

import json
# This converts from JSON to a python dict
parsed_input = json.loads(input_data)

# Now, all of your static variables are referenceable as keys:
secret = parsed_input['secret']
minutes = parsed_input['minutes']
link = parsed_input['link']

# Plus, you can get your bookmark collection as:
bookmark_collection = parsed_input['bookmark_collection']

# Print a list of names of the bookmark collections...
print bookmark_collection.keys() # Note this contains sublinks, so remove it if needed

# Get the name of the Boarding Pass bookmark:
print bookmark_collection['boarding_pass']['name']

# Print out a list of all bookmark links as:
#  Boarding Pass
#    * 1: http://www.1.com/
#    * 2: http://www.2.com/
#  ...
for bookmark_definition in bookmark_collection.values():
    # Skip sublinks...
    if bookmark_definition['name'] == 'sublinks':
        continue
    print bookmark_definition['name']
    for bookmark in bookmark_definition['bookmarks']:
        print "    * %(name)s: %(link)s" % bookmark

# Get the sublink definition:
sublinks = parsed_input['bookmark_collection']['sublinks']

# .. and print them
print sublinks['name']
for link in sublinks['link']:
    print '  *', link

关于python - 将多维 Json 数组解析为 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12344332/

相关文章:

Javascript:是否可以通过名称从数组中调用对象?

arrays - 迭代一系列字典以获得最高的 gpa

无法复制字符串的一部分

javascript - 使用 jquery ui 自动完成在 MVC 中搜索 JSON 输出

c++ - 用于保存一类 vector 或 SQL 数据库的简单文件

python - 使用 Chinese Whispers 算法进行人脸聚类

python - Pytorch 张量的截断 SVD 分解而不转移到 cpu

python - 无论长度如何,Pandas Dataframe 上最干净的迭代/功能应用程序

python - 无法将CSV文件数据导入mysql表

json - Kafka - 从 JSON 记录到 S3 中的 Parquet 文件