1

次の JSON ペイロードがあり、要素の 1 つに ENUM タイプの値を追加しようとしています。

{
  "firstName" : "firstName",
  "lastName" : "lastName",
  "systemIds" : [ {
    "systemName" : "SAP",
    "systemId" : "99c27c63-e0b6-4585-8675-7aa3811eb4c3"
  }, {
    "systemName" : "SFDC",
    "systemId" : "b65abf1d-825d-4ee3-9791-02d2cdd5e6f4"
  }, {
    "systemName" : "MONGODB",
    "systemId" : "18e50430-8589-42d6-8477-58839a8bf202"
  } ]
}

そして、これがこのWebサイトを使用して自動生成された後に変更しようとした私のスキーマです。http://jsonschema.net/#/

ここで私の期待どおりに ENUM タイプを手動で追加しました。この SCHEMA の問題を修正してください。

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "id": "http://abcd.com/schemas/customerInfo",
  "type": "object",
  "properties": {
    "firstName": {
      "id": "http://abcd.com/schemas/customerInfo/firstName",
      "type": "string"
    },
    "lastName": {
      "id": "http://abcd.com/schemas/customerInfo/lastName",
      "type": "string"
    },
    "systemIds": {
      "id": "http://abcd.com/schemas/customerInfo/systemIds",
      "type": "array",
      "minItems": 1,
      "uniqueItems": false,
      "additionalItems": true,
      "items": {
        "anyOf": [
          {
            "id": "http://abcd.com/schemas/customerInfo/systemIds/0",
            "type": "object",
            "properties": {
              "systemName": {
                "id": "http://abcd.com/schemas/customerInfo/systemIds/0/systemName",
                "type": { "enum": [ "SAP", "MONGODB", "ERP", "SFDC" ] }
              },"required": ["type"],
              "systemId": {
                "id": "http://abcd.com/schemas/customerInfo/systemIds/0/systemId",
                "type": "string"
              }
            }
          }
        ]
      }
    }
  }
}
4

1 に答える 1

4

配列項目のスキーマが正しくないようです。

{
  "anyOf": [
    {
      "id": "http://abcd.com/schemas/customerInfo/systemIds/0",
      "type": "object",
      "properties": {
        "systemName": {
          "id": "http://abcd.com/schemas/customerInfo/systemIds/0/systemName",
          "type": {
            "enum": [
              "SAP",
              "MONGODB",
              "ERP",
              "SFDC"
            ]
          }
        },
        "required": [
          "type"
        ],
        "systemId": {
          "id": "http://abcd.com/schemas/customerInfo/systemIds/0/systemId",
          "type": "string"
        }
      }
    }
  ]
}

プロパティが必要であると述べ"required"ましたが、無効なスキーマを入れました。それを取り除く必要があります。しかし、"type"プロパティがどこかで必要であり、間違った場所に配置されていることを意味している可能性があります。私は何の関係も見ません。

プロパティは、その"systemName"列挙内にある必要がある値を持つ文字列型です。そこのスキーマは無効です。

これはあなたのために働くはずです:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "id": "http://abcd.com/schemas/customerInfo",
  "type": "object",
  "properties": {
    "firstName": {
      "id": "http://abcd.com/schemas/customerInfo/firstName",
      "type": "string"
    },
    "lastName": {
      "id": "http://abcd.com/schemas/customerInfo/lastName",
      "type": "string"
    },
    "systemIds": {
      "id": "http://abcd.com/schemas/customerInfo/systemIds",
      "type": "array",
      "minItems": 1,
      "uniqueItems": false,
      "additionalItems": true,
      "items": {
        "anyOf": [
          {
            "id": "http://abcd.com/schemas/customerInfo/systemIds/0",
            "type": "object",
            "properties": {
              "systemName": {
                "id": "http://abcd.com/schemas/customerInfo/systemIds/0/systemName",
                "type": "string",
                "enum": [ "SAP", "MONGODB", "ERP", "SFDC" ]
              },
              "systemId": {
                "id": "http://abcd.com/schemas/customerInfo/systemIds/0/systemId",
                "type": "string"
              }
            }
          }
        ]
      }
    }
  }
}
于 2015-03-31T02:27:21.823 に答える