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

模型类中JsonNode属性的springfox swagger配置

鲜于煜祺
2023-03-14

import com.fasterxml.jackson.databind.JsonNode;

@ApiModel(
   description = "Data Class to hold new details"
)
public class NewModel {
   @ApiModelProperty(
      notes = "Value in JSON key:value format. Can be any key:value pair",
      example = "{ds:2017:08:05,hh:11}"
   )
   private final JsonNode value;
   (... getters and setters ...)
}

除此之外,我还有一些rest控制器,它们在请求体中获得一个JSON。我使用这个模型从请求体获取JSOn。

"NewModel": {
            "type": "object",
            "properties": {
                "value": {
                    "example": "{nds:2017:08:05,hh:11}",
                    "description": "Value of the stamp in JSON key:value format",
                    "$ref": "#/definitions/JsonNode"
                }
            },
            "description": "Data Class to hold details"
        }

生成的引用JsonNode定义是

"definitions": {
    "JsonNode": {
        "type": "object",
        "properties": {
            "array": {
                "type": "boolean"
            },
            "bigDecimal": {
                "type": "boolean"
            },
            "bigInteger": {
                "type": "boolean"
            },
            "binary": {
                "type": "boolean"
            },
            "boolean": {
                "type": "boolean"
            },
            "containerNode": {
                "type": "boolean"
            },
            "double": {
                "type": "boolean"
            },
            "float": {
                "type": "boolean"
            },
            "floatingPointNumber": {
                "type": "boolean"
            },
            "int": {
                "type": "boolean"
            },
            "integralNumber": {
                "type": "boolean"
            },
            "long": {
                "type": "boolean"
            },
            "missingNode": {
                "type": "boolean"
            },
            "nodeType": {
                "type": "string",
                "enum": [
                    "ARRAY",
                    "BINARY",
                    "BOOLEAN",
                    "MISSING",
                    "NULL",
                    "NUMBER",
                    "OBJECT",
                    "POJO",
                    "STRING"
                ]
            },
            "null": {
                "type": "boolean"
            },
            "number": {
                "type": "boolean"
            },
            "object": {
                "type": "boolean"
            },
            "pojo": {
                "type": "boolean"
            },
            "short": {
                "type": "boolean"
            },
            "textual": {
                "type": "boolean"
            },
            "valueNode": {
                "type": "boolean"
            }
        }
    }

现在,当我用这个API定义生成一个客户端库时,客户端允许的JsonNode对象只有布尔变量,我无法为它分配实际的JSON字符串,因此无法将JSON值传递给连接服务器(我从中生成了API定义

谢谢(并为这篇冗长的帖子道歉)

共有2个答案

陈法
2023-03-14

例如,您可以执行以下操作:

@Bean
public AlternateTypeRuleConvention typeConvention(final TypeResolver resolver) {
    return new AlternateTypeRuleConvention() {

        @Override
        public int getOrder() {
            return Ordered.HIGHEST_PRECEDENCE;
        }

        @Override
        public List<AlternateTypeRule> rules() {
            return Collections.singletonList(
                    AlternateTypeRules.newRule(resolver.resolve(JsonNode.class), resolver.resolve(jsonNodeApi()))
            );
        }
    };
}

private Type jsonNodeApi() {
    return new AlternateTypeBuilder()
            .fullyQualifiedClassName(
                    String.format("%s.generated.%s",
                            JsonNode.class.getPackage().getName(),
                            JsonNode.class.getSimpleName()))
            .build();
}

< code > alternateypebuilder 还允许您在必要时指定自定义字段。

申屠弘图
2023-03-14

ApiModelProperty中的一个属性dataType=“java.util.Map”应该会有所帮助

public class NewModel {
   @ApiModelProperty(
      example = "{ds:2017:08:05,hh:11}",
      dataType = "java.util.Map"
   )
   private final JsonNode value;
 类似资料:
  • 我们如何排除模型中“groovy”类的元类属性作为响应?我有一个Jax-Rs资源,它返回一个带swagger@ApiModel注释的groovy对象。我在swagger ui中看到了太多时髦的特定属性。如何从序列化中排除它? 它似乎在使用Jackson进行pogo json序列化?如何注释我的groovy类,将元类属性排除在json序列化字符串中?我试着使用JsonIgnoreProperties

  • 问题内容: 在模型类中使用JavaFX bean属性是否正确? 我想知道在模型类中使用属​​性是否能够将它们与视图组件轻松绑定是否是一种好习惯。我不担心将来这些库的可用性,因为我的程序将在JRE8或更高版本上运行,但是在模型类中使用JavaFX库的性质使我持怀疑态度,并且我担心当前和将来的不兼容性,尤其是因为我想使用Hibernate来保留这些属性。 注意:我使用纯JavaFX环境,并且我的应用程

  • 您好,我正在建立一个动物园微服务,包括动物、员工、客户和价格表。我的动物微服务可以工作,但在我的员工微服务中,我遇到了一个错误,即没有为类型“EmployeeModel”找到属性“name”。在问这个问题之前,我已经在网上搜索了几个小时,还有一些类似的问题。我在模型中没有“名字”employee_name,我只是感到困惑,不知道如何修复它。任何指导/建议/信息将不胜感激:)第一次发布,所以我希望我

  • 我正在使用Swashback为webapi2项目生成swagger documentation\UI。我们的模型与一些遗留接口共享,因此我想忽略模型上的几个属性。我不能使用JsonIgnore属性,因为遗留接口还需要序列化为JSON,所以我不想全局忽略属性,只是在Swashback配置中。 我在这里找到了这样做的方法: https://github.com/domaindrivendev/Swas

  • 我已经定义了一个枚举类型,详细描述了用于给灰度图像着色的各种调色板,为此我使用了描述属性和TypeConver,以便使用我绑定到该类型的组合框、列表框等枚举值的描述字符串。枚举看起来像这样: EnumDescriptionTypeConverter如下所示: 使用它,我可以绑定enum类型,比如组合框的ItemsSource属性,并让描述字符串自动用作组合框元素,使用另一个自定义标记扩展类,我认为