第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何將 swagger.json 映射到 Swagger 對(duì)象?

如何將 swagger.json 映射到 Swagger 對(duì)象?

FFIVE 2022-11-02 10:25:57
我目前正在嘗試將 swagger.json 文件映射到 io.swagger.models.Swagger.class。我嘗試使用 com.fasterxml.jackson.databind.ObjectMapper.class 通過以下方式解決問題:new ObjectMapper().readValue(file.getInputStream(), Swagger.class)`但我得到了這個(gè)例外:"InvalidDefinitionException: Cannot construct instance of io.swagger.models.parameters.Parameter (no Creators, like default construct, exist): abstract types either need to be mapped to concrete types, have custom deserializer, or contain additional type information at [Source: (FileInputStream); line: 28, column: 21] (through reference chain: io.swagger.models.Swagger["paths"]->java.util.LinkedHashMap["/myPath"]->io.swagger.models.Path["post"]->io.swagger.models.Operation["parameters"]->java.util.ArrayList[0])"問題是 Swagger 類中的參數(shù)字段如下所示:protected Map<String, Parameter> parameters;這里的Parameter是一個(gè)Interface,所以O(shè)bjectMapper不知道要實(shí)例化哪個(gè)類(BodyParameter, PathParameter, FormParameter...)我希望將 swagger.json 文件加載到 Swagger 對(duì)象中。謝謝您的幫助。
查看完整描述

2 回答

?
慕斯王

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超2個(gè)贊

與 Rayen 的回答類似,您必須注冊(cè)反序列化器。Swagger 為其對(duì)象(例如參數(shù)、屬性、模型)提供了序列化io.swagger.utilio.swagger:swagger-core。



查看完整回答
反對(duì) 回復(fù) 2022-11-02
?
慕田峪4524236

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個(gè)贊

我找到了,我需要實(shí)現(xiàn) Deserializers 以明確聲明要使用的類構(gòu)造函數(shù)。我對(duì)參數(shù)、模型和屬性都有問題,它們都是接口。


這是代碼:


ObjectMapper mapper = new ObjectMapper();

        SimpleModule module = new SimpleModule();

        module.addDeserializer(io.swagger.models.parameters.Parameter.class, new ParameterDeserializer());

        module.addDeserializer(io.swagger.models.Model.class, new ModelDeserializer());

        module.addDeserializer(io.swagger.models.properties.Property.class, new PropertyDeserializer());

        mapper.registerModule(module);

只是一個(gè)澄清事情的例子,我以后可以使它更靈活:


import java.io.IOException;


import com.fasterxml.jackson.core.JsonParser;

import com.fasterxml.jackson.core.JsonProcessingException;

import com.fasterxml.jackson.databind.DeserializationContext;

import com.fasterxml.jackson.databind.JsonNode;

import com.fasterxml.jackson.databind.ObjectMapper;

import com.fasterxml.jackson.databind.deser.std.StdDeserializer;


import io.swagger.models.parameters.BodyParameter;

import io.swagger.models.parameters.FormParameter;

import io.swagger.models.parameters.Parameter;

import io.swagger.models.parameters.PathParameter;

import io.swagger.models.parameters.QueryParameter;


public class ParameterDeserializer extends StdDeserializer<io.swagger.models.parameters.Parameter> {


    /**

     * 

     */

    private static final long serialVersionUID = 1L;


    public ParameterDeserializer() {

        this(null);

    }


    public ParameterDeserializer(Class<?> vc) {

        super(vc);

    }


    @Override

    public Parameter deserialize(JsonParser parser, DeserializationContext ctxt)

            throws IOException, JsonProcessingException {

        final JsonNode node = parser.getCodec().readTree(parser);

        final ObjectMapper mapper = (ObjectMapper) parser.getCodec();

        if (node.get("in").toString().toLowerCase().replaceAll("\"", "").equals("path")) {

            return mapper.treeToValue(node, PathParameter.class);

        } else if (node.get("in").toString().toLowerCase().replaceAll("\"", "").equals("body")) {

            return mapper.treeToValue(node, BodyParameter.class);

        } else if (node.get("in").toString().toLowerCase().replaceAll("\"", "").equals("query")) {

            return mapper.treeToValue(node, QueryParameter.class);

        } else {

            return mapper.treeToValue(node, FormParameter.class);

        }

    }


}


其他反序列化器也一樣。希望能幫助到你。


查看完整回答
反對(duì) 回復(fù) 2022-11-02
  • 2 回答
  • 0 關(guān)注
  • 377 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)