docs: def decode_strs_in_dict(unicode_dict  # type: Dict[Union[AnyStr, int], Union[int, float, AnyStr, List[Union[int, float, AnyStr]]]]
                              ):
          # type: (...) -> Dict[Union[AnyStr, int], Any]
          """Decode strings in dictionary which may contains unicode strings or numeric values.
  
          - 1. integer could be key, float cannot;
          - 2. the function is called recursively
  
          Examples:
  
              .. code-block:: python
  
                 input = {u'name': u'zhulj', u'age': u'28', u'1': ['1', 2, 3]}
                 output = {'name': 'zhulj', 'age': 28, 1: [1, 2, 3]}
                 input = {u'name': u'zhulj', 'edu': {'nwsuaf': 2007, u'bnu': '2011', 'igsnrr': 2014}}
                 output = {'name': 'zhulj', 'edu': {'nwsuaf': 2007, 'bnu': 2011, 'igsnrr': 2014}}
  
          """
          unicode_dict = {StringClass.convert_str2num(k): StringClass.convert_str2num(v) for
                          k, v in iteritems(unicode_dict)}
          for k, v in iteritems(unicode_dict):
              if isinstance(v, dict):
                  unicode_dict[k] = UtilClass.decode_strs_in_dict(v)
          return unicode_dict