微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将muilti维Json数组解析为Python

我在我脑海中,试图第一次解析 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","link": "http:\/\/www.1.com\/"
        },"link": "http:\/\/www.2.com\/"
        },"link": "http:\/\/www.3.hk"
        }
      ]
    },"sublinks": {
      "name": "sublinks","link": [
        "http:\/\/www.1.com","http:\/\/www.2.com","http:\/\/www.3.com"
      ]
    }
  }
}

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

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

然后是单独的子链接,它总是相同的,我需要单独的字典中的所有链接.

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

解决方法

在解析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

原文地址:https://www.jb51.cc/js/151263.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐