docs: def json2py(json_obj):
      """
      Converts the inputted JSON object to a python value.
      
      :param      json_obj | <variant>
      """
      for key, value in json_obj.items():
          if type(value) not in (str, unicode):
              continue
  
          # restore a datetime
          if re.match('^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}:\d+$', value):
              value = datetime.datetime.strptime(value, '%Y-%m-%d %H:%M:%S:%f')
          elif re.match('^\d{4}-\d{2}-\d{2}$', value):
              year, month, day = map(int, value.split('-'))
              value = datetime.date(year, month, day)
          elif re.match('^\d{2}:\d{2}:\d{2}:\d+$', value):
              hour, minute, second, micro = map(int, value.split(':'))
              value = datetime.time(hour, minute, second, micro)
          else:
              found = False
              for decoder in _decoders:
                  success, new_value = decoder(value)
                  if success:
                      value = new_value
                      found = True
                      break
  
              if not found:
                  continue
  
          json_obj[key] = value
      return json_obj