我在我脑海中,试图第一次解析
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