Skip to content

Commit 69b568d

Browse files
committed
Fix CLI predict response JSON parsing
1 parent 880c105 commit 69b568d

File tree

2 files changed

+23
-5
lines changed

2 files changed

+23
-5
lines changed

cli/cmd/predict.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,8 @@ var predictCmd = &cobra.Command{
124124
value = prediction.PredictionReversed
125125
}
126126

127-
if casted, ok := cast.InterfaceToFloat64(value); ok {
127+
if cast.IsFloatType(value) {
128+
casted, _ := cast.InterfaceToFloat64(value)
128129
fmt.Println(s.Round(casted, 2, true))
129130
} else {
130131
fmt.Println(s.UserStrStripped(value))
@@ -151,7 +152,7 @@ func makePredictRequest(apiURL string, samplesJSONPath string) (*PredictResponse
151152
}
152153

153154
var predictResponse PredictResponse
154-
err = json.Unmarshal(httpResponse, &predictResponse)
155+
err = json.DecodeWithNumber(httpResponse, &predictResponse)
155156
if err != nil {
156157
return nil, errors.Wrap(err, "prediction response")
157158
}

pkg/lib/cast/interface.go

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -702,6 +702,9 @@ func InterfaceToStrStrMap(in interface{}) (map[string]string, bool) {
702702

703703
func IsIntType(in interface{}) bool {
704704
switch in.(type) {
705+
case json.Number:
706+
_, err := in.(json.Number).Int64()
707+
return err == nil
705708
case int8:
706709
return true
707710
case int16:
@@ -718,6 +721,9 @@ func IsIntType(in interface{}) bool {
718721

719722
func IsFloatType(in interface{}) bool {
720723
switch in.(type) {
724+
case json.Number:
725+
_, err := in.(json.Number).Float64()
726+
return err == nil
721727
case float32:
722728
return true
723729
case float64:
@@ -731,10 +737,21 @@ func IsFloatOrIntType(in interface{}) bool {
731737
}
732738

733739
func IsScalarType(in interface{}) bool {
734-
if IsFloatOrIntType(in) {
735-
return true
736-
}
737740
switch in.(type) {
741+
case int8:
742+
return true
743+
case int16:
744+
return true
745+
case int32:
746+
return true
747+
case int64:
748+
return true
749+
case int:
750+
return true
751+
case float32:
752+
return true
753+
case float64:
754+
return true
738755
case string:
739756
return true
740757
case bool:

0 commit comments

Comments
 (0)