Deserialize deserializes data directly into the provided target value. The target must be a pointer to the value to deserialize into.
(data []byte, v any)
| 554 | // Deserialize deserializes data directly into the provided target value. |
| 555 | // The target must be a pointer to the value to deserialize into. |
| 556 | func (f *Fory) Deserialize(data []byte, v any) error { |
| 557 | defer f.resetReadState() |
| 558 | f.readCtx.SetData(data) |
| 559 | |
| 560 | readHeader(f.readCtx) |
| 561 | if f.readCtx.HasError() { |
| 562 | return f.readCtx.TakeError() |
| 563 | } |
| 564 | |
| 565 | // Deserialize the value - TypeMeta is read inline using streaming protocol |
| 566 | target := reflect.ValueOf(v).Elem() |
| 567 | f.readCtx.ReadValue(target, RefModeTracking, true) |
| 568 | if f.readCtx.HasError() { |
| 569 | return f.readCtx.TakeError() |
| 570 | } |
| 571 | |
| 572 | return nil |
| 573 | } |
| 574 | |
| 575 | // resetReadState resets read context state without allocation |
| 576 | func (f *Fory) resetReadState() { |