func deserialize(request *http.Request,typ reflect.Type) (interface{}, *httpNet.HandlerError){
data,e:=ioutil.ReadAll(request.Body)
fmt.Println(string(data))
if e !=nil{
return nil,&httpNet.HandlerError{e,"could not read request",http.StatusBadRequest}
}
v:=typ.Elem()
payload:=reflect.New(v).Elem().Interface()
eaa:= json.NewDecoder(request.Body).Decode(payload)
if e!=nil{
fmt.Println(eaa.Error())
}
fmt.Println(payload)
fmt.Println(reflect.ValueOf(payload)
)
return payload,nil
}
назвать:Преобразование JSON на структуру с помощью отражения в golang
r,_:= deserialize(request,reflect.TypeOf(&testData{}))
Он не бросает ошибок и выглядит вполне допустимую операцию для меня, но результат пустая структура ожидает типа.
В чем проблема?
Tanx, тестировал, но я получил тот же результат – Mohsen
@Mohsen Я делаю ту же самую вещь в моем коде, и она прекрасно работает. Вы уверены, что есть данные? –
@Mohsen Я создал упрощенный рабочий пример на игровой площадке. См. Отредактированный текст ответа. –