将 java.util.Map 声明为 json-schema

问题描述 投票:0回答:2

我需要将

java.util.Map
实例映射到
org.jsonschema2pojo
maven 插件用来创建 POJO 的 JSON 模式。

我没有找到一个好的简单的解决方案。

有人可以帮助我吗?

这是我实际的 json-schema 文件

{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "title": "Response",
    "description": "A Response object",
    "type": "object",
    "properties": {
        "result": {
            "type": "string",
            "description": "describes response status"
        },
        "msg": {
            "type": "string",
            "description": "user msgs"
        }
    },
    "required": ["result"],
    "additionalProperties": false
}

我需要添加一个字段

"errors"
,将其转换为Java中的
java.util.Map<String, String>

java json maven jsonschema jsonschema2pojo
2个回答
0
投票

据我所知

additionalProperties
可以完成这项工作。 例如,您可以声明类型为
Map<String, Object>
的错误属性(现在是 yaml):

...
properties:
  errors:
    type: object
    additionalProperties:
      type: object

您无需指定键的类型,因为这描述了一个 json 文档,该文档自然将字符串作为对象的键。

代替

type: object
,您还可以对
type: string
执行
Map<String, String>
操作,或者如果您在该映射中拥有自己的类型作为值,则引用另一个定义。


0
投票

这是一个旧的东西,但如果您正在寻找地图属性而不是选择

additionalProperties
选项,那么它会很方便:

{
    "type" : "object",
    "properties" : {
        "myProperty" : {
            "existingJavaType" : "java.util.Map<String,Integer>",
            "type" : "object"
        }
    }
}

这会给你:

@JsonProperty("myProperty")
private Map<String, Integer> myProperty;

参见现有Java类型

© www.soinside.com 2019 - 2024. All rights reserved.