diff --git a/src/main/java/io/swagger/codegen/v3/generators/DefaultCodegenConfig.java b/src/main/java/io/swagger/codegen/v3/generators/DefaultCodegenConfig.java index 144b70327d..f7daeb25e1 100644 --- a/src/main/java/io/swagger/codegen/v3/generators/DefaultCodegenConfig.java +++ b/src/main/java/io/swagger/codegen/v3/generators/DefaultCodegenConfig.java @@ -2517,6 +2517,8 @@ public CodegenParameter fromParameter(Parameter parameter, Set imports) codegenParameter.dataType = codegenProperty.datatype; codegenParameter.dataFormat = codegenProperty.dataFormat; + setParameterJson(codegenParameter, parameterSchema); + if (getBooleanValue(codegenProperty, IS_ENUM_EXT_NAME)) { codegenParameter.datatypeWithEnum = codegenProperty.datatypeWithEnum; codegenParameter.enumName = codegenProperty.enumName; @@ -4407,6 +4409,14 @@ protected void setParameterNullable(CodegenParameter parameter, CodegenProperty parameter.nullable = property.nullable; } + protected void setParameterJson(CodegenParameter codegenParameter, Schema parameterSchema) { + String contentType = parameterSchema.getExtensions() == null ? null : (String) parameterSchema.getExtensions().get("x-content-type"); + if (contentType != null && contentType.startsWith("application/") && contentType.endsWith("json")) { + // application/json, application/problem+json, application/ld+json, some more? + codegenParameter.isJson = true; + } + } + protected boolean isFileTypeSchema(Schema schema) { final Schema fileTypeSchema; if (StringUtils.isNotBlank(schema.get$ref())) { diff --git a/src/main/resources/handlebars/typescript-angular/api.service.mustache b/src/main/resources/handlebars/typescript-angular/api.service.mustache index 6976139da0..167ddf80fb 100644 --- a/src/main/resources/handlebars/typescript-angular/api.service.mustache +++ b/src/main/resources/handlebars/typescript-angular/api.service.mustache @@ -175,7 +175,12 @@ export class {{classname}} { {{#useHttpClient}}queryParameters = {{/useHttpClient}}queryParameters.set('{{baseName}}', {{paramName}}.toISOString()); {{/isDateTime}} {{^isDateTime}} + {{#isJson}} + {{#useHttpClient}}queryParameters = {{/useHttpClient}}queryParameters.set('{{baseName}}', JSON.stringify({{paramName}})); + {{/isJson}} + {{^isJson}} {{#useHttpClient}}queryParameters = {{/useHttpClient}}queryParameters.set('{{baseName}}', {{paramName}}); + {{/isJson}} {{/isDateTime}} } {{/isListContainer}}