ich folgende Json Schema
Beispiel zu replizieren bin versucht, durch das Schema in Code definieren Newtonsoft.Json.Schema
mit:Wie definiere ich eine Json Schemadefinitionen enthält, in Code
{
"$schema": "http://json-schema.org/draft-04/schema#",
"definitions": {
"address": {
"type": "object",
"properties": {
"street_address": { "type": "string" },
"city": { "type": "string" },
"state": { "type": "string" }
},
"required": ["street_address", "city", "state"]
}
},
"type": "object",
"properties": {
"billing_address": { "$ref": "#/definitions/address" },
"shipping_address": { "$ref": "#/definitions/address" }
}
Dies ist so nah wie ich habe bisher. (Beispiel ist in F #, sondern könnte genauso gut in C# sein.)
Code:
open Newtonsoft.Json.Schema
open Newtonsoft.Json.Linq
let makeSchema =
let addressSchema = JSchema()
addressSchema.Properties.Add("street_address", JSchema(Type = Nullable(JSchemaType.String)))
addressSchema.Properties.Add("city", JSchema(Type = Nullable(JSchemaType.String)))
addressSchema.Properties.Add("state", JSchema(Type = Nullable(JSchemaType.String)))
addressSchema.Required.Add "street_address"
addressSchema.Required.Add "city"
addressSchema.Required.Add "state"
let schema = JSchema()
schema.Properties.Add("billing_address", addressSchema)
schema.Properties.Add("shipping_address", addressSchema)
schema
Ausgang:
{
"properties": {
"billing_address": {
"properties": {
"street_address": {
"type": "string"
},
"city": {
"type": "string"
},
"state": {
"type": "string"
}
},
"required": [
"street_address",
"city",
"state"
]
},
"shipping_address": {
"$ref": "#/properties/billing_address"
}
}
}
Wie Sie sehen können, nur eine der beiden Adressen definiert ist Verwenden eines Verweises auf ein anderes Schema, und das Adressschema ist in "Eigenschaften" statt "Definitionen". Was ist der Trick, ein Schema in "Definitionen" zu definieren und es an anderer Stelle zu referenzieren?
Vielen Dank! Wir waren nah dran, aber op_Implicit hat uns über die Linie gebracht. Ich habe ein Problem protokolliert: https://github.com/JamesNK/Newtonsoft.Json.Schema/issues/60. Wird als Antwort markieren, wenn ich das getestet habe. (Ich bin mir sicher, dass es in Ordnung ist.; -) – Kit
Verwendet diesen Ansatz in unserem "realen" Code und es funktionierte wie ein Charme. Danke noch einmal! – Kit
Ich bin froh, Ihnen helfen zu können –