1

I have a JSON response that return various metrics as values of and confidence that I would like represent as a JSON Schema (as well generating beans from using JsonSchema2Pojo).

{
    "QPI": {
        "value": 0.053916827852998075,
        "confidence": 0.89127
    },
    "MTBF": {
        "value": 0.053916827852998075,
        "confidence": 0.90210
    },
    "MDT": {
        "value": 0.053916827852998075,
        "confidence": 0.63541
    }
}

The number of metrics in the response is not fixed so I cannot represent them as properties.

If the response had been

[
    {
        "metric": "QPI",
        "value": 0.053916827852998075,
        "confidence": 0.89127
    },
    {
        "metric": "MTBF",
        "value": 0.053916827852998075,
        "confidence": 0.90210
    }, 

    {
        "metric": "MDT",
        "value": 0.053916827852998075,
        "confidence": 0.63541
    }
]

then I could write a schema like

{
    "type": "array",
    "items": {
        "type": "object",
        "properties": {
            "metric": {
                "type": "string"
            },
            "value": {
                "type": "number"
            },
            "confidence": {
                "type": "number"
            }
        }
    }
}

but how to do it for the values of an object?

Sled
  • 18,541
  • 27
  • 119
  • 168

1 Answers1

1

The "additionalProperties" is not just a boolean as in the case of "additionalProperties": false but can also take the type of object that is expected:

{
    "type": "object",
    "additionalProperties": {
        "type": "object",
        "properties": {
            "value": {
                "type": "number"
            },
            "confidence": {
                "type": "number"
            }
        }
    }
}
Sled
  • 18,541
  • 27
  • 119
  • 168