Json Schema
örnek çoğaltmak için çalışılıyor
, Newtonsoft.Json.Schema
kullanarak kodunda şema tanımlayarak kodunda tanımlarını içeren bir Json Şeması, define: bende olarakNasıl yaparım
{
"$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" }
}
Bu kadar yakın şimdiye kadar. (Örnek F # ama sadece de C# olabilir.)
Kodu:
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
Çıktı: Gördüğünüz gibi
{
"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"
}
}
}
, iki adresten tek tanımlanır Başka bir şemaya referans kullanarak ve adres şeması "tanımlar" yerine "özellikler" içinde bulunur. "Tanımlar" da bir şemayı tanımlamak ve başka bir yere atıfta bulunmanın yolu nedir?
Çok teşekkür ederim! Buna yakındık ama op_Implicit bizi çizginin üzerine iten şeydi. Bir sorun kaydettim: https://github.com/JamesNK/Newtonsoft.Json.Schema/issues/60. Bunu test ettiğimde cevap olarak işaretleyeceğim. (Eminim iyi.; -) – Kit
Bu yaklaşımı “gerçek dünya” kodumuzda kullandık ve bir çekicilik gibi çalıştı. Tekrar teşekkürler! – Kit
Yardımdan memnun oldum –