一.项目背景

        最近在开发一个数据抓取业务模块,用于抓取本地数据库的部分关键数据, 作为数据分析和统计的依据. 在抓取过程中, 由于不同子业务项目产生的数据结构不是完全一样, 这时候就要用到判断数据节点是否存在的功能, 数据是json格式.

二.实现代码

        不多废话直接上代码吧:

class checkJSON(object): 
  def getKeys(self,data):
      keysAll_list = []
      def getkeys(data):  # 遍历json所有key
          if (type(data) == type({})):
              keys = data.keys()
              for key in keys:
                  value = data.get(key)
                  if (type(value) != type({}) and type(value) != type([])):
                      keysAll_list.append(key)
                  elif (type(value) == type({})):
                      keysAll_list.append(key)
                      getkeys(value)
                  elif (type(value) == type([])):
                      keysAll_list.append(key)
                      for para in value:
                          if (type(para) == type({}) or type(para) == type([])):
                              getkeys(para)
                          else:
                              keysAll_list.append(para)
      getkeys(data)
      return keysAll_list


    def isExtend(self,data,tagkey):   #检测目标字段tagkey是否在data(json数据)中
        if(type(data)!=type({})):
            print('please input a json!')
        else:
            key_list=self.getKeys(data)
            for key in key_list:
                if(key==tagkey):
                    return True
        return False

if __name__ == '__main__':
    cjson=checkJSON()
    data={
    "code": 0,
    "msg": "ok",
    "data": {
        "list": [
            {
                "stock_id0": "601318.SH",
                "stock_code0": "601318",
                "stock_name0": "中国平安",
            },{
                "stock_id1": "600000.SH",
                "stock_code1": "600000",
                "stock_name1": "浦发银行",
            }
        ]
    },
     "pass":{
                "stock_id2": "600000.SH",
                "stock_code2": "600000",
                "stock_name2": "浦发银行",
            },
    "call_stack": ""
}
    list=cjson.getKeys(data)
    print(list)
    print(cjson.isExtend(data,'stock_name0'

三.效果展示

GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e 4 个月前
8c391e04 6 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐