-
-
Notifications
You must be signed in to change notification settings - Fork 473
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
data field parsed as []int instead of []float32/64 #98
Comments
json-to-go is interpreting your first data array as 0 instead of 0.00 and is using that for all your other data arrays. JSON:
Struct:
|
Oops, wow, that's fun. Someone with a few minutes want to pitch in a fix? |
I haven't worked with js in 15 years, but I'm giving it a go.
Are you able to provide any guidance here? |
@apxamccallum I think First, try to get the tests passing with |
#119 addresses the non-array/slice case. But an uglier hack may be required to address the array/slice case. |
The hack is also what is causing the test(true) to fail. Adding 0.1 to the value makes it no longer match the test case. |
I don't have much time to think about it right now, but I'd also be ok with a way that doesn't use the regexp hack. Maybe even if it's converting the value to a string so we don't have to deal with float messiness. |
After the first PR I thought of a way to deal with arrays. Agreed a way to not use regex would probably be better, that looks like a bit bigger of a refactor then I can handle right now. I'm focusing on learning Go, so this was more of an interesting side quest. |
I've put some thought to this. There doesn't seem to be a way to have JSON.parse() retain significant figures. The hack is currently checking if it is a value (looks for a ":") checks if the value is a number followed by a decimal and a zero, then replaces that zero with a 1. My patch allows for values or arrays of values, then does the same replacement. Wrapping the number in quotes, would require new code to validate if a string is also a number. This would have the side effect of potentially converting some values that were intentionally strings into numbers, which may be undesirable, and would still require the regex hack. I think the fix addresses the current issue, without creating unintended side effects. |
@mholt Thank for pushing the fix to the live page, I just ran the original issue through the page and it now provides the correct structs. Is it possible to close this issue now? Really appreciate having this tool. type AutoGenerated struct {
Values []Values `json:"values"`
}
type StatKey struct {
Key string `json:"key"`
}
type IntervalUnit struct {
Quantifier int `json:"quantifier"`
IntervalType string `json:"intervalType"`
}
type Stat struct {
Timestamps []int64 `json:"timestamps"`
StatKey StatKey `json:"statKey"`
RollUpType string `json:"rollUpType"`
IntervalUnit IntervalUnit `json:"intervalUnit"`
Data []float64 `json:"data"`
}
type StatList struct {
Stat []Stat `json:"stat"`
}
type Values struct {
ResourceID string `json:"resourceId"`
StatList StatList `json:"stat-list"`
} |
Yeah! Sorry it took me so long 😅 |
json
structs
The text was updated successfully, but these errors were encountered: