1

こんにちは、RESTful Web サービスのドキュメントに swagger を使用しています。json ドキュメントの応答からオブジェクトの特定のプロパティを削除する方法はありますか? つまり、swagger がメソッド パラメーター オブジェクトと応答モデル (たとえば、notes、defaultValue、allowableValue、internalDescription など) に与える多くのプロパティがあり、それらは私には必要なく、応答があまり読みにくいために null です。

メソッド パラメータの場合:

     "parameters": [
                    {
                        "name": "someName1",
                        "description": null,
                        "notes": null,
                        "paramType": "path",
                        "defaultValue": null,
                        "allowableValues": null,
                        "required": true,
                        "allowMultiple": false,
                        "paramAccess": null,
                        "internalDescription": null,
                        "wrapperName": null,
                        "dataType": "string",
                        "valueTypeInternal": null
                    },
                    {
                        "name": "someName2",
                        "description": null,
                        "notes": null,
                        "paramType": "query",
                        "defaultValue": null,
                        "allowableValues": null,
                        "required": true,
                        "allowMultiple": false,
                        "paramAccess": null,
                        "internalDescription": null,
                        "wrapperName": null,
                        "dataType": "string",
                        "valueTypeInternal": null
                    }
                ],

-================================================= ============================

応答モデル クラスの場合

"SomeResponseClass": {
        "required": false,
        "name": null,
        "id": "SomeResponseClass",
        "properties": {
            "instanceVariable1": {
                "required": false,
                "name": null,
                "id": null,
                "properties": null,
                "allowableValues": null,
                "description": null,
                "notes": null,
                "access": null,
                "default": null,
                "additionalProperties": null,
                "items": null,
                "uniqueItems": false,
                "type": "Date"
            },
            "instanceVariable2": {
                "required": false,
                "name": null,
                "id": null,
                "properties": null,
                "allowableValues": null,
                "description": null,
                "notes": null,
                "access": null,
                "default": null,
                "additionalProperties": null,
                "items": null,
                "uniqueItems": false,
                "type": "double"
            }
         }
4

1 に答える 1

1

JSON マッパーが null プロパティを無視するように構成されていません。これには、次のように簡単に対処できます。

@Provider
@Produces(MediaType.APPLICATION_JSON)
public class JacksonJsonProvider extends JacksonJaxbJsonProvider {
private static ObjectMapper commonMapper = null;

public JacksonJsonProvider() {
    if(commonMapper == null){
        ObjectMapper mapper = new ObjectMapper();

        mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
        mapper.setSerializationInclusion(JsonInclude.Include.NON_DEFAULT);
        mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

        commonMapper = mapper;
    }
    super.setMapper(commonMapper);
    }
}

このマッパーを web.xml のスキャン プロパティに追加すると、null がなくなります。

于 2013-05-16T14:40:13.793 に答える