diff --git a/client.go b/client.go index b79dcd6..6ca3a86 100644 --- a/client.go +++ b/client.go @@ -208,7 +208,7 @@ func (hc *HttpClient) newResponse() *define.Response { return &define.Response{ Header: map[string]string{}, Cookie: map[string]string{}, - Body: "", + Body: map[string]any{}, Code: "", Message: "", Data: "", @@ -262,13 +262,13 @@ func (hc *HttpClient) fillResponseCookie(response *define.Response) { // // Date : 21:38 2024/6/5 func (hc *HttpClient) fillResponseBody(response *define.Response) { - response.Body = string(response.RestyResponse.Body()) - response.Code = gjson.Get(response.Body, hc.reqConfig.CodeField).String() - response.Message = gjson.Get(response.Body, hc.reqConfig.MessageField).String() - businessData := gjson.Get(response.Body, hc.reqConfig.DataField) + response.Data = string(response.RestyResponse.Body()) + response.Code = gjson.Get(response.Data, hc.reqConfig.CodeField).String() + response.Message = gjson.Get(response.Data, hc.reqConfig.MessageField).String() + businessData := gjson.Get(response.Data, hc.reqConfig.DataField) if businessData.Value() == nil { // data为空指针, 归一化成空对象 - response.Data = "{}" + response.Body = map[string]any{} } else { if businessData.IsArray() { // 数组类型的转换 @@ -284,10 +284,11 @@ func (hc *HttpClient) fillResponseBody(response *define.Response) { }) } } + _ = serialize.JSON.UnmarshalWithNumber([]byte(response.Data), &response.Body) } response.ExtendData = map[string]string{} - gjson.Parse(response.Body).ForEach(func(key, value gjson.Result) bool { + gjson.Parse(response.Data).ForEach(func(key, value gjson.Result) bool { if key.String() == hc.reqConfig.CodeField || key.String() == hc.reqConfig.MessageField || key.String() == hc.reqConfig.DataField { diff --git a/define/response.go b/define/response.go index d1aa5b8..0021813 100644 --- a/define/response.go +++ b/define/response.go @@ -22,7 +22,7 @@ type Response struct { Data string `json:"data"` // 响应body Code string `json:"code"` // 业务状态码 Message string `json:"message"` // 业务状态码描述 - Body string `json:"body"` // 响应数据, 如果 data 本身是 list, 会自动转成 {"list": 真实数据} + Body map[string]any `json:"body"` // 响应数据 ExtendData map[string]string `json:"extend_data"` // 除去 code / message / data 之外的其他数据 HttpCode int `json:"http_code"` // http状态码 HttpCodeStatus string `json:"http_code_status"` // http状态码描述