docs: def fhp_from_json_dict(
          json_dict  # type: Dict[str, Any]
      ):
      # type: (...) -> FieldHashingProperties
      """
      Make a :class:`FieldHashingProperties` object from a dictionary.
  
          :param dict json_dict:
              The dictionary must have have an 'ngram' key
              and one of k or num_bits. It may have
              'positional' key; if missing a default is used.
              The encoding is
              always set to the default value.
          :return: A :class:`FieldHashingProperties` instance.
      """
      h = json_dict.get('hash', {'type': 'blakeHash'})
      num_bits = json_dict.get('numBits')
      k = json_dict.get('k')
      if not num_bits and not k:
          num_bits = 200 # default for v2 schema
      return FieldHashingProperties(
          ngram=json_dict['ngram'],
          positional=json_dict.get(
              'positional', FieldHashingProperties._DEFAULT_POSITIONAL),
          hash_type=h['type'],
          prevent_singularity=h.get('prevent_singularity'),
          num_bits=num_bits,
          k=k,
          missing_value=MissingValueSpec.from_json_dict(
              json_dict[
                  'missingValue']) if 'missingValue' in json_dict else None
      )