Problem/Motivation

It seems that fields of type "Number (float)" are not currently supported by this module.

This message appears in watchdog when trying to view schema for a float field:

float is not a valid type for a JSON document.

Steps to reproduce

Create an entity with a "Number (float)" field and look at the schema of that field. It is null.

Proposed resolution

TBD

Remaining tasks

TBD

User interface changes

None.

API changes

None.

Data model changes

Provide proper JSON Schema for float values.

Support from Acquia helps fund testing for Drupal Acquia logo

Comments

m.stenta created an issue. See original summary.

m.stenta’s picture

I spent a little time digging into this with XDebug. I found the following line in class DataDefinitionNormalizer:

const JSON_TYPES = ['null', 'boolean', 'string', 'number', 'integer', 'array', 'object'];

https://git.drupalcode.org/project/jsonapi_schema/-/blob/4f4f1b18fd9fe8f...

This gets used in that class's normalize() method:

https://git.drupalcode.org/project/jsonapi_schema/-/blob/4f4f1b18fd9fe8f...

It seems that adding float to the JSON_TYPES array fixes the issue... sort of... instead of null the schema for my float field is now:

{
  "type": "float",
  "title": "test float field"
}

However, "type": "float" is not a valid JSON Schema type. According to https://json-schema.org/understanding-json-schema/reference/numeric.html, float should be "type": "number".

I could add a simple conditional in that class to convert float to number, but that's probably not the "correct" place to handle this.

If anyone can point me in the right direction I'm happy to provide a patch! :-)

m.stenta’s picture

Issue summary: View changes
m.stenta’s picture

Status: Active » Needs review
FileSize
709 bytes

I could add a simple conditional in that class to convert float to number, but that's probably not the "correct" place to handle this.

Here is a ROUGH patch that does this. But as described above, I don't think this is the "correct" approach. Nevertheless, the patch is a quick fix for anyone who needs it (can be applied via cweagans/composer-patches).

Status: Needs review » Needs work

The last submitted patch, 4: 3256795-4.patch, failed testing. View results

bradjones1’s picture