Skip to content

Feature request: Enable to change the deserializer body #6600

@LucasCMFBraga

Description

@LucasCMFBraga

Use case

I updated the schema of my application, changing the amount field from int to float to comply with my company's requirements. However, I noticed that the default JSON parser was losing floating-point precision during requests.

def test_api_gateway_resolver_numeric_value():
    app = ApiGatewayResolver()

    @app.post("/my/path")
    def test_handler():
        return app.current_event.json_body

    # WHEN calling the event handler
    event = {}
    event.update(LOAD_GW_EVENT)
    event["body"] = '{"amount":  2.2999999999999998}'
    event["httpMethod"] = "POST"

    result = app(event, {})
    # THEN process event correctly
    assert result["statusCode"] == 200
    assert result["multiValueHeaders"]["Content-Type"] == [content_types.APPLICATION_JSON]
    assert result["body"] == '{"amount":  2.2999999999999998}' # assert '{"amount":2.3}' == '{"amount":  2.2999999999999998}'

Solution/User Experience

I've already implemented a solution and will be opening a PR soon.
The fix involves passing a custom deserializer instance to the ApiGatewayResolver constructor to handle floating-point precision correctly.

Alternative solutions

Acknowledgment

  • This feature request meets Powertools for AWS Lambda (Python) Tenets
    Should this be considered in other Powertools for AWS Lambda languages? i.e. Java, TypeScript, and .NET

Activity

boring-cyborg

boring-cyborg commented on May 2, 2025

@boring-cyborg

Thanks for opening your first issue here! We'll come back to you as soon as we can.
In the meantime, check out the #python channel on our Powertools for AWS Lambda Discord: Invite link

changed the title [-]Feature request: Enable to change the desarterializer body[/-] [+]Feature request: Enable to change the deserializer body[/+] on May 2, 2025
leandrodamascena

leandrodamascena commented on May 6, 2025

@leandrodamascena
Contributor

Hey @LucasCMFBraga! Thanks for opening this issue and sending the PR. Sorry for the late reply!

I'll take a look in the PR right now!!

moved this from Triage to Working on it in Powertools for AWS Lambda (Python)on May 6, 2025
github-actions

github-actions commented on May 26, 2025

@github-actions
Contributor

⚠️COMMENT VISIBILITY WARNING⚠️

This issue is now closed. Please be mindful that future comments are hard for our team to see.

If you need more assistance, please either tag a team member or open a new issue that references this one.

If you wish to keep having a conversation with other community members under this issue feel free to do so.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Projects

Status

Coming soon

Milestone

No milestone

Relationships

None yet

    Participants

    @leandrodamascena@LucasCMFBraga

    Issue actions

      Feature request: Enable to change the deserializer body · Issue #6600 · aws-powertools/powertools-lambda-python