fast-json-stringify icon indicating copy to clipboard operation
fast-json-stringify copied to clipboard

JSON Schema serialize BigInt to string

Open tzelon-cypator opened this issue 3 years ago • 2 comments

Prerequisites

  • [X] I have written a descriptive issue title
  • [X] I have searched existing issues to ensure the regression has not already been reported

Last working version

4.1.0

Stopped working in version

4.2.0

Node.js version

16

Operating system

macOS

Operating system version (i.e. 20.04, 11.3, 10)

12.3.1

💥 Regression Report

Before version 4.2.0 response schema with property type string, format int64, and pattern ^[0-9]*$ would be able to serialize BigInt to string. version 4.2.0 return an error "Do not know how to serialize a BigInt"

Removing the format solves the issue.

Steps to Reproduce

codesandbox demo https://codesandbox.io/s/bigint-serialize-jqn5uu

app.get(
    "/",
    {
      schema: {
        response: {
          200: {
            type: "object",
            properties: {
              hello: {
                type: "string",
                format: "int64",
                pattern: "^[0-9]*$"
              }
            }
          }
        }
      }
    },
    async (request, reply) => {
      return { hello: 123n };
    }
  );

Expected Behavior

I'm not sure if the problem is in v4.2.0 or previous versions.

tzelon-cypator avatar Jul 13 '22 12:07 tzelon-cypator

I could not have guessed that would have worked at all. Our support to BigInt is limited to integers: https://github.com/fastify/fast-json-stringify/blob/4d990f660bca9c3b3eb98f086a04c80ade428277/test/bigint.test.js.

I think something must be added in https://github.com/fastify/fast-json-stringify/blob/967bacfa248dde27550ea8fd5f3cebeb4e45b171/serializer.js to bring that back.

Would you like to send a PR?

mcollina avatar Jul 13 '22 12:07 mcollina

Sure, I will try to work on it.

tzelon-cypator avatar Jul 13 '22 13:07 tzelon-cypator

The matter appears to be settled. I tried to reproduce it but I don't have any errors. Does anybody still have that problem?

Adibla avatar Aug 31 '22 20:08 Adibla

The matter appears to be settled. I tried to reproduce it but I don't have any errors. Does anybody still have that problem?

I think it started working after #504. I'm not sure, you can check if you want.

ivan-tymoshenko avatar Aug 31 '22 20:08 ivan-tymoshenko

The matter appears to be settled. I tried to reproduce it but I don't have any errors. Does anybody still have that problem?

I think a test for this case would be good! We have them already but we are not using the setup described above

Eomm avatar Sep 04 '22 09:09 Eomm