For what is the JsonObjectAttribute.Id?

Viewed 437
1 Answers

It's used by Json.NET Schema to override the default "$id" property value when generating a schema for a type.

E.g. if I have the following type:

[JsonObject(Id = "http://foo.bar/schemas/rootobject.json")]
public class RootObject { }

And auto-generate a schema using JSchemaGenerator as follows:

var schema = new JSchemaGenerator().Generate(typeof(RootObject)).ToString();

The result is (demo fiddle here):

{
  "$id": "http://foo.bar/schemas/rootobject.json",
  "type": "object"
}

When not overridden, the value of "$id" is controlled by the SchemaIdGenerationHandling enumeration.

It was also used by the obsolete JsonSchemaGenerator according to JamesNK:

It was used by JsonSchemaGenerator but that is deprecated.

Related