当前位置: 首页 > 面试题库 >

将多维度Json数组解析为Python

晁砚
2023-03-14
问题内容

我烦恼了,第一次尝试解析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"
      ]
    }
  }
}

这分为三部分,即我需要以独立字符串形式获取的第一维(秘密,分钟,链接)静态数据。

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

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

我正在阅读有关解析JSON的信息,但是我发现的大多数东西都是放在一个字典中的简单数组。有人有什么好的技术可以做到这一点吗?


问题答案:

解析JSON之后,您将得到一个Python dict。因此,假设上述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


 类似资料:
  • 问题内容: 我有一个像这样的JSON数组: 我想使用jQuery 能够返回每个数组值的值,但是我不确定如何访问它们。 到目前为止,我有以下jQuery代码: 我该如何使用jQuery? 问题答案: 的在JSON表示一个对象。对象的每个属性均以逗号分隔。像这样,可以通过使用句点运算符的键来访问属性值。的在JSON表示一个数组。数组值可以是任何对象,并且值以逗号分隔。要遍历数组,请使用带有索引的标准f

  • 问题内容: 我正在使用Weather Underground API制作应用程序,但在解析与严重警报有关的代码块时遇到了麻烦。JSON使用具有子键值对的键值对- 这对我来说不是问题,因为我可以从中选出后续的NSDictionary-但严重警报的条目被证明是有问题的。见下文: “警报”对与我已经解析的其他对有所不同,因为它在子值周围有这个 []括号 ,而且我不确定如何清除它,以便可以访问子值。在我能

  • 问题内容: 将多维javascript数组转换为JSON的最佳方法是什么? 问题答案: 大多数流行的JavaScript框架都包含JSON实用程序功能。例如,jQuery具有直接调用url并将JSON结果作为对象加载的函数: http //docs.jquery.com/Getjson 但是,您可以从json网站获取开源JSON解析器和字符串化器: https://github.com/dougl

  • 我正在尝试使用jQuery将此对象转换为数组 我试图得到这样的数组输出: 怎样?

  • 问题内容: 我正在尝试使用mapper进行解析以将大JSON解析为java对象。我有一个很大的JSON,但遇到了其中的这一小片段,不确定如何解析。 这是JSON,其格式看起来几乎没有什么不同。我试图了解如何将其解析为对象。 我不知道它采用哪种格式,以及如何将其解析为对象。 问题答案: 这取决于你的身材有多大。如果可以将其加载到内存,则可以使用最简单的方法: 解决方案1: POJO类: 用法: 上面

  • 我有一个,名为,内容如下: 做这件事最简单的方法是什么?

  • 问题内容: 来自服务器的以下JSON响应 被此ngResource服务解析为2d数组 这样叫 追踪到 有什么提示吗? 问题答案: TLDR; ngResource 期望的物体或阵列 对象 中的响应。 在操作列表中将设置 为时, ngResource 模块遍历响应中收到的每个项目,并创建一个新的Resource实例。为此,Angular在收到的项目和类之间执行了深层复制,这为我们提供了具有特殊方法的

  • 问题内容: 我正在尝试解析一个包含JSON数据的文件: 由于这是带有动态键的JSON数组,因此我认为我可以使用: 但是,我无法使用来解析文件: 将包含JSON数据的文件解析为Go结构的最简单方法是将数组(仅字符串类型转换为字符串类型)? 编辑: 要进一步详细说明可接受的答案-的确,我的JSON是地图数组。为了使我的代码正常工作,该文件应包含: 然后可以将其读入 问题答案: 这是因为您的json实际