当前位置: 首页 > 知识库问答 >
问题:

String类型的属性与以下类型不匹配:模式中的对象JSON模式验证器

田博远
2023-03-14
public class Category {
   private Map<String, List<String>> categoryMapping;
}
{
  "categoryMapping": {
    "categoryA": ["a","b","c"],
    "categoryB": ["x","y","z"],
    "categoryC": ["x","y","z"]
  }
}
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "title": "$id$",
  "description": "list_of_values-1",
  "required": [
    "categoryMapping"
  ],
  "properties": {
    "categoryMapping": {
      "$id": "#/properties/categoryMapping",
      "type": "object",
      "title": "The categoryMapping Schema",
      "properties": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
    }
  }
}
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"title": "$id$",
"description": "list_of_values-1",
"properties": {
    "categoryMapping": {
      "$id": "#/properties/categoryMapping",
      "type": "object",
      "title": "The Categorymapping Schema",
      "required": [
        "categoryA",
        "categoryB",
        "categoryC"
      ],
      "properties": {
        "categoryA": {
          "$id": "#/properties/categoryMapping/properties/categoryA",
          "type": "array",
          "title": "The Categorya Schema",
          "items": {
            "$id": "#/properties/categoryMapping/properties/categoryA/items",
            "type": "string",
            "title": "The Items Schema",
            "default": "",
            "examples": [
              "a",
              "b",
              "c"
            ],
            "pattern": "^(.*)$"
          }
        },
        "categoryB": {
          "$id": "#/properties/categoryMapping/properties/categoryB",
          "type": "array",
          "title": "The Categoryb Schema",
          "items": {
            "$id": "#/properties/categoryMapping/properties/categoryB/items",
            "type": "string",
            "title": "The Items Schema",
            "default": "",
            "examples": [
              "x",
              "y",
              "z"
            ],
            "pattern": "^(.*)$"
          }
        },
        "categoryC": {
          "$id": "#/properties/categoryMapping/properties/categoryC",
          "type": "array",
          "title": "The Categoryc Schema",
          "items": {
            "$id": "#/properties/categoryMapping/properties/categoryC/items",
            "type": "string",
            "title": "The Items Schema",
            "default": "",
            "examples": [
              "x",
              "y",
              "z"
            ],
            "pattern": "^(.*)$"
          }
        }
      }
    }
  }
}

共有1个答案

邴景山
2023-03-14

因此,您的示例JSON实际上是一个具有三个属性的类型,这就是为什么您生成的模式要求您显式定义每个属性,即使它们实际上是相同的类型。

但是,如果您愿意稍微修改您的示例json:

{
  "categoryMapping": [
    {
      "name": "categoryA",
      "map": ["a","b","c"]
    },
    {
      "name": "categoryB",
      "map": ["x","y","z"]
    },
    {
      "name": "categoryC",
      "map": ["x","y","z"]
    }
  ]
}

然后可以使用以下模式验证它:

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "categoryMapping": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "map"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "map": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      }
    }
  }
}
 类似资料:
  • 问题内容: 我正在将此问题设置为“ FizzBu​​zz”,而我的switch语句给了我一些问题,这是我的代码: 如果您可以为我提供指针/提示,而不是给我正确的代码,那将是一件好事:D我宁愿自己解决它,但一些提示也可以使我摆脱困境。 问题答案: 您可以在单独检查它们之前使用并检查两者是否匹配:

  • 有四种不同的类型:地点、语言、技术和行业。每个类型都有一个存储库,可以返回这些类型的集合。例如位置列表。每个类型都有一个类型为String的name属性。有一个字符串列表。它可以包含位置、语言等名称。我想编写一个函数来查找那些与字符串列表名称匹配的类型实体(位置、语言、...)。我在想这样的事情: 这是不正确的,那么如何对集合进行查询,然后如何确定name属性是否存在呢?

  • 我有一个从提取的代码,对于多个子类来说,这个代码看起来应该完全相同,所以我尽量避免重复。但是,实际上(见下文),scala认为是一个泛型的,返回的值类型为,当然,它没有和方法。 问题是在这里避免重复的适当方法是什么?我对将转换为字符串并不那么着迷,因为这段代码可以使用刚从字符串解析为AST的json。我开始考虑为我需要的三种类型编写包装器,并将这些类型的匹配和隐式转换器转换为包装器,然后为这些包装

  • 我想消除此示例代码中的类型擦除警告: 它编译和工作正常,但有一个警告: 警告:(31,13)类型模式Seq[Int](Seq[Int]的底层)中的非变量类型参数Int未选中,因为它被擦除情况b消除:Seq[Int]= 在这种情况下,你有什么简单的解决方案来避免擦除吗? 到目前为止,我尝试了什么(根据这一点): 但是它不能编译,因为c现在是Any类型。 我相信这个问题有几种解决方法。我会接受最简单的