Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

toJsonSchema array fields conversion. Should items be an object? #493

Open
kolyasya opened this issue Mar 25, 2024 · 1 comment
Open

toJsonSchema array fields conversion. Should items be an object? #493

kolyasya opened this issue Mar 25, 2024 · 1 comment

Comments

@kolyasya
Copy link

I'm trying to build up a client-side form with https://github.com/rjsf-team/react-jsonschema-form
To do so I'm using SimplSchema → JSON Schema conversion.

And for array fields I noticed that I don't get a proper result.
This issue mostly refers to this line —

items: [itemSchema],

If I start with such schema:

const animals = new SimpleSchema({
  animals: { type: Array },
  'animals.$': { type: Object },
  'animals.$.label': { type: String },
});

I get a JSONSchema:

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "animals": {
      "type": "array",
      "items": [
        {
          "type": "object",
          "properties": {
            "label": {
              "type": "string"
            }
          },
          "required": ["label"],
          "additionalProperties": false
        }
      ],
      "additionalItems": false
    }
  },
  "required": ["animals"],
  "additionalProperties": false
}

And if I use this JSON schema directly with formData:

{
  "animals": [
    {
      "label": "Cat"
    },
    {
      "label": "Dog"
    },
    {
      "label": "Whale"
    }
  ]
}

I get only a single item:
image

This is because items of the same shape should be defined as an object, not array:
https://json-schema.org/learn/getting-started-step-by-step#optional

Am I thinking about that wrong or is this a bug?

Copy link

Thank you for submitting an issue!

If this is a bug report, please be sure to include, at minimum, example code showing a small schema and any necessary calls with all their arguments, which will reproduce the issue. Even better, you can link to a saved online code editor example, where anyone can immediately run the code and see the issue.

If you are requesting a feature, include a code example of how you imagine it working if it were implemented.

If you need to edit your issue description, click the [...] and choose Edit.

Be patient. This is a free and freely licensed package that I maintain in my spare time. You may get a response in a day, but it could also take a month. If you benefit from this package and would like to see more of my time devoted to it, you can help by sponsoring.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant