JSON再帰クエリ

本体:
クラスjson_search():
    '' '递归查询依赖キー' '' 
    デフ検索キー(自己、データ、キー):
        self.data =データ
        self.key_value = [] 
        self.data_json(データ)の場合=偽:!
            self.search (self.data、キー)
            self.key_value戻る
        :他に
            はFalseを返す

    (自己、データ)デフdata_jsonを:
        '' ' ''参判断入り' 
        '' '' JSON是STR子类'' 
        の場合でisinstance(データ、STR) :
            試す:
                self.data = json.loads(データ、エンコード= 'UTF-8')
            とValueError除く:
                印刷( "値誤差入力") 
                Falseを返します) 
        ELIFのでisinstance(データ、辞書)。
            self.data返す
        :他に
            Falseを返し

    デフ検索(自己、データ、キー):
        私のためのデータに:
            もし私==キー:
                self.key_value.append(データ[i])と
            のelifのでisinstance(データ[i]は、辞書) :
                self.key_value.append(データ[I]に.get(キー))
            ELIFのでisinstance(データ[i]が、リスト):
                データにおけるjに対する[I]:
                    self.search(Jキー)
        リターンself.key_value 
示例:
search_json = json_search()
データ= { 
"API3 / getbanneradvertver2":[
{ "10016": "トークンエラー"}、
{ "1006": "ユーザ名エラー"}、
{ "1006": "パスワード"}、
{ "1000": "成功"}
]、
" API3 / beta4 ":[
{" 1006 ":"成功着陸"}、
{" 1006 ":"ユーザー名エラー"}、
{" 1006 ":"間違ったパスワード"}
]、
" API3 / getcourseintro ":[
{" 1006 ":"エラートークン"}、
{" 1006 ":2022}、
{" 10001 ":"ユーザ名エラー"}、
{" 10002 ":[{" 100092 ":" 9 "}]
}
]、
"/ API3 / getads":[
{ "1000": "成功"}
]
}
もし__name__ == "__main__":
プリント(search_json.search_key(データ、 "1000"))

おすすめ

転載: www.cnblogs.com/cyanrose/p/11596598.html