Tôi đang cố gắng để nhân rộng các Json Schema
ví dụ sau, bằng cách định nghĩa lược đồ trong mã sử dụng Newtonsoft.Json.Schema
:Làm thế nào để xác định một Schema Json chứa các định nghĩa, trong 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" }
}
Đây là càng gần như tôi đã có cho đến nay. (Ví dụ là trong F # nhưng cũng giống như cũng có thể là trong C#.)
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
Output:
{
"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"
}
}
}
Như bạn có thể thấy, chỉ có một trong hai địa chỉ được xác định sử dụng tham chiếu đến một giản đồ khác và lược đồ địa chỉ nằm trong "thuộc tính" thay vì "định nghĩa". Bí quyết để xác định lược đồ trong "định nghĩa" là gì và tham chiếu nó ở nơi khác?
Thankyou rất nhiều! Chúng tôi đã gần với điều này nhưng op_Implicit là những gì đẩy chúng tôi qua đường dây. Tôi đã đăng sự cố: https://github.com/JamesNK/Newtonsoft.Json.Schema/issues/60. Sẽ đánh dấu là câu trả lời khi tôi đã thử nghiệm điều này. (Tôi chắc chắn nó là tốt.; -) – Kit
Sử dụng cách tiếp cận này trong "thế giới thực" của chúng tôi mã và nó làm việc như một say mê. Cảm ơn một lần nữa! – Kit
Vui mừng được trợ giúp –