zoukankan      html  css  js  c++  java
  • python解析json文件读取Android permission说明

    今天用python解析一个文本文件,格式如下:

    [
        {
            "Key":"android.permission.ACCESS_CHECKIN_PROPERTIES",
            "Title":"访问检入属性",
            "Memo":"允许对检入服务上传的属性进行读/写访问。普通应用程序不能使用此权限。",
            "Level":0
        },
        {
            "Key":"android.permission.ACCESS_COARSE_LOCATION",
            "Title":"大概位置",
            "Memo":"访问大概的位置源(例如蜂窝网络数据库)以确定手机的大概位置(如果可以)。恶意应用程序可借此确定您所处的大概位置。",
            "Level":1
        },
        {
            "Key":"android.permission.ACCESS_COARSE_LOCATION",
            "Title":"大概位置",
            "Memo":"访问大概的位置源(例如蜂窝网络数据库)以确定手机的大概位置(如果可以)。恶意应用程序可借此确定您所处的大概位置。",
            "Level":1
        }
    ]

    开始采用open('filepath').readlines()的方法读取,这样读取的内容都存取到一个列表中,但是我要取每一个{}中的内容取不到,于是考虑用split(',')的方法分离开来,结果把每一个{}里面的内容也根据","分开了。后来请教了网友,说用json方式读取。于是采用以下方式:

    1 #-*-encoding:utf-8-*-
    2 import json
    3 f = file(r'C:\Users\Tim\Desktop\test.json')
    4 jsonobj = json.load(f)
    5 #列表用序号来查询
    6 print jsonobj[0]['Memo']
    7 f.close

    运行之后报以下错误:

    ValueError: No JSON object could be decoded

    重新将json文件以UTF8无BOM方式保存了一下,运行成功了。

    另外,对于读取json string可以用以下方式:

    1 s = json.loads('{"name":"test", "type":{"name":"seq", "parameter":["1", "2"]}}')
    2 print s
    3 print s.keys()
    4 print s["name"]
    5 print s["type"]["name"]
    6 print s["type"]["parameter"][1]

     下面给出完整的读取permission文件的代码:

     1 #-*-coding:utf8-*-
     2 import json
     3 import codecs
     4 
     5 def getperinfo(inputper):
     6     f = file(r'C:\Users\Tim\Desktop\test.json')
     7     jsonobj = json.load(f)
     8     #print jsonobj[0]['Memo']
     9     for permission in jsonobj:
    10         #permission.values()获取词典的值
    11         if permission.values()[2] == inputper:
    12             print "permission name:%s\npermission info:%s" %(permission.values()[3],permission.values()[0])
    13     f.close
    14 
    15 if __name__ == '__main__':
    16     #optparse采用预先定义好的选项来解析命令行参数,optparse默认就是解析命令行参数的。
    17     from optparse import OptionParser
    18     parser = OptionParser()
    19     parser.add_option("-p", "--permission", dest="permission",help="input permission")
    20     (options, args) = parser.parse_args()
    21     #options.permission为输入的permission
    22     getperinfo(options.permission)

    执行示例如下:

  • 相关阅读:
    bzoj1415 NOI2005聪聪和可可
    Tyvj1952 Easy
    poj2096 Collecting Bugs
    COGS 1489玩纸牌
    COGS1487 麻球繁衍
    cf 261B.Maxim and Restaurant
    cf 223B.Two Strings
    cf 609E.Minimum spanning tree for each edge
    cf 187B.AlgoRace
    cf 760B.Frodo and pillows
  • 原文地址:https://www.cnblogs.com/goodhacker/p/3014017.html
Copyright © 2011-2022 走看看