code: def _ConvertMapFieldValue(self, value, message, field):
      
      if not isinstance(value, dict):
        raise ParseError(
            'Map field {0} must be in a dict which is {1}.'.format(
                field.name, value))
      key_field = field.message_type.fields_by_name['key']
      value_field = field.message_type.fields_by_name['value']
      for key in value:
        key_value = _ConvertScalarFieldValue(key, key_field, True)
        if value_field.cpp_type == descriptor.FieldDescriptor.CPPTYPE_MESSAGE:
          self.ConvertMessage(value[key], getattr(
              message, field.name)[key_value])
        else:
          getattr(message, field.name)[key_value] = _ConvertScalarFieldValue(
              value[key], value_field)
docs: Convert map field value for a message map field.
  
      Args:
        value: A JSON object to convert the map field value.
        message: A protocol message to record the converted data.
        field: The descriptor of the map field to be converted.
  
      Raises:
        ParseError: In case of convert problems.