mirror of
https://github.com/httprunner/httprunner.git
synced 2026-05-31 21:39:41 +08:00
fix: extract data using jmespath
Change-Id: Icea3b8fa7e71dd610c19c91e21a259104ab2fe30
This commit is contained in:
12
response.go
12
response.go
@@ -1,6 +1,7 @@
|
||||
package hrp
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
@@ -53,7 +54,9 @@ func newResponseObject(t *testing.T, parser *parser, resp *http.Response) (*resp
|
||||
// convert respObjMeta to interface{}
|
||||
respObjMetaBytes, _ := json.Marshal(respObjMeta)
|
||||
var data interface{}
|
||||
if err := json.Unmarshal(respObjMetaBytes, &data); err != nil {
|
||||
decoder := json.NewDecoder(bytes.NewReader(respObjMetaBytes))
|
||||
decoder.UseNumber()
|
||||
if err := decoder.Decode(&data); err != nil {
|
||||
log.Error().
|
||||
Str("respObjMeta", string(respObjMetaBytes)).
|
||||
Err(err).
|
||||
@@ -167,5 +170,12 @@ func (v *responseObject) searchJmespath(expr string) interface{} {
|
||||
log.Error().Str("expr", expr).Err(err).Msg("search jmespath failed")
|
||||
return expr // jmespath not found, return the expression
|
||||
}
|
||||
if number, ok := checkValue.(json.Number); ok {
|
||||
checkNumber, err := parseJSONNumber(number)
|
||||
if err != nil {
|
||||
log.Error().Interface("json number", number).Err(err).Msg("convert json number failed")
|
||||
}
|
||||
return checkNumber
|
||||
}
|
||||
return checkValue
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user