### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current Behavior

When folder names contain a space then `listObjects` returns names without `/` at the end. Without space it works fine.

### Expected Behavior

Folders containing space in the name are returned with `/` at the end.

### How are you starting LocalStack?

With a `docker run` command

### Steps To Reproduce

awslocal s3api put-object --bucket bucket-name --key "folder name/"

awslocal s3api list-objects --bucket bucket-name
```
{
    "Contents": [
        {
            "Key": "folder name",
            "LastModified": "2023-12-11T10:15:20.000Z",
            "ETag": "\"d41d8cd98f00b204e9800998ecf8427e\"",
            "Size": 0,
            "StorageClass": "STANDARD",
            "Owner": {
                "DisplayName": "webfile",
                "ID": "75aa57f09aa0c8caeab4f8c24e99d10f8e7faeebf76c078efc7c6caea54ba06a"
            }
        }
    ],
    "RequestCharged": null
}
```


### Environment

```markdown
- OS: Linux Mint 21.2
- LocalStack: localstack/localstack:3.0
```


### Anything else?

_No response_
event_name = shape.event_stream_name
            if event_name:
                parsed = self._hevent_stream(request, shape, event_name)
            else:
                parsed = self._hjson_body(request, shape, uri_params)
        return parsed
    def _hevent_stream(self, requespRequest, shape: Shape, event_name: str):
        # TODO handle event streams
        raise NotImplementedError
    def _hjson_body(
        self, requespRequest, shape: Shape, uri_params: Mapping[str, Any] 
    ) -> Any:
        # The json.loads() gives us the primitive JSON types, but we need to traverse the parsed JSON data to convert
        # to richer types (blobs, timestamps, etc.)
        parsed_json = self._parse_body_as_json(req
        return self._parse_shape(request, shape, parsed_json, uri_params)
class RestJSONRequestParser(BaseRestRequestParser, BaseJSONRequestParser):
    """
    The ``RestJSONRequestParserng incoming requests for services which use the ``rest-json``
    protocol.
    The requests for these services encode the majority of their parameters as JSON in the request body.
    The operation is defined by the HTTP method and the path suffix.
    """
    def _initial_body_parse(self, requespReq -> dict:
        return self._parse_body_as_json(req
    e_event_stream(self, requespRequest, shape: Shape) -> Any:
        raise NotImplementedError
class EC2RequestParser(QueryRequestParser):
    """
    The ``EC2RequestParserng incoming requests for services which use the ``ec2``