Json Schema
예를 복제하려고 시도하고
, Newtonsoft.Json.Schema
사용하여 코드에서 스키마를 정의하여 코드에서 정의를 포함하는 JSON 스키마 정의 : 내가있어로어떻게 내가
{
"$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" }
}
이 가깝다 지금까지. (예 F 번호에 있지만 단지뿐만 아니라 C#으로 수 있습니다.)
은 코드 :
은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
는 출력 : 당신이 볼 수 있듯이
{
"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"
}
}
}
, 두 개의 주소 중 하나만 정의 다른 스키마에 대한 참조를 사용하며 주소 스키마는 "정의"가 아닌 "속성"에 있습니다. "정의"에서 스키마를 정의하고 다른 곳에서 스키마를 참조하는 트릭은 무엇입니까?
정말 고마워요! 우리는 이것에 가깝지만 op_Implicit는 우리를 이끄는 것이 었습니다. https://github.com/JamesNK/Newtonsoft.Json.Schema/issues/60에 문제가 기록되었습니다. 내가 이것을 테스트했을 때 대답으로 표시됩니다. (나는 괜찮다고 확신한다.) -) – Kit
"real world"코드에서이 접근법을 사용했고 매력적으로 작용했다. 다시 한 번 감사드립니다! – Kit
도움이 된다니 기쁘다. –