code: func (iter *Iterator) ReadVal(obj interface{}) {
  	cacheKey := reflect2.RTypeOf(obj)
  	decoder := iter.cfg.getDecoderFromCache(cacheKey)
  	if decoder == nil {
  		typ := reflect2.TypeOf(obj)
  		if typ.Kind() != reflect.Ptr {
  			iter.ReportError("ReadVal", "can only unmarshal into pointer")
  			return
  		}
  		decoder = iter.cfg.DecoderOf(typ)
  	}
  	ptr := reflect2.PtrOf(obj)
  	if ptr == nil {
  		iter.ReportError("ReadVal", "can not read into nil pointer")
  		return
  	}
  	decoder.Decode(ptr, iter)
  }
docs: // ReadVal copy the underlying JSON into go interface, same as json.Unmarshal