-
-
Notifications
You must be signed in to change notification settings - Fork 6.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Go Generator Incorrectly handles string with decimal format #10836
Labels
Comments
I did find these lines here: Lines 2018 to 2021 in 5c3a869
This was merged in a PR back in Nov 2020 In this file: modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java we have this: public static boolean isDecimalSchema(Schema schema) {
if (SchemaTypeUtil.STRING_TYPE.equals(schema.getType()) // type: string
&& "number".equals(schema.getFormat())) { // format: number
return true;
}
return false;
} |
I believe the fix would result in
|
JasonTashtego
pushed a commit
to JasonTashtego/openapi-generator
that referenced
this issue
Nov 3, 2022
Allows specification of the source type to the Go JSON marshaller. Example json: "myValue": "0.10" YAML: myValue: type: number format: double x-go-srctype-tag: - string Generated Go code with tag: MyValue *float64 `json:"myValue,omitempty,string"`
6 tasks
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Bug Report Checklist
Description
When handling properties with
the golang generator incorrectly assumes a JSON float/numeric type.
This causes an Unmarshall error when encountering a string in the API response.
openapi-generator version
5.3.0
OpenAPI declaration file content or url
https://raw.githubusercontent.com/alpacahq/bkdocs/564d49f52bc91bb180b15b2b900253a1e7c53846/assets/openapi.yaml
Generation Details
Steps to reproduce
Start a new golang project in go 1.16 or higher.
Run
go mod init
in the projectCreate a folder for the openapi package and cd to the folder
Run
openapi-generator-cli generate -g go -i https://raw.githubusercontent.com/alpacahq/bkdocs/564d49f52bc91bb180b15b2b900253a1e7c53846/assets/openapi.yaml -o .
Then
go mod tidy
IF you have an Alpaca Broker account, then you can reproduce this fully. Otherwise, here is what happens:
You make an API call that would return fields annotated as above. You will get an Unmarshall error because you are attempting to Unmarshall a
string
into afloat64
.One thing to note - generating for akka-scala seems to build in the correct conversions.
BigDecimal
is used, but it correctly parses a string response from the API.Related issues/PRs
Could not find anything.
Suggest a fix
Fixing the struct tag should do the trick -
from
to
Can this be modified in the template or generator logic?
The text was updated successfully, but these errors were encountered: