github.com/lingyao2333/mo-zero@v1.4.1/core/mapping/jsonunmarshaler.go (about)

     1  package mapping
     2  
     3  import (
     4  	"io"
     5  
     6  	"github.com/lingyao2333/mo-zero/core/jsonx"
     7  )
     8  
     9  const jsonTagKey = "json"
    10  
    11  var jsonUnmarshaler = NewUnmarshaler(jsonTagKey)
    12  
    13  // UnmarshalJsonBytes unmarshals content into v.
    14  func UnmarshalJsonBytes(content []byte, v interface{}) error {
    15  	return unmarshalJsonBytes(content, v, jsonUnmarshaler)
    16  }
    17  
    18  // UnmarshalJsonMap unmarshals content from m into v.
    19  func UnmarshalJsonMap(m map[string]interface{}, v interface{}) error {
    20  	return jsonUnmarshaler.Unmarshal(m, v)
    21  }
    22  
    23  // UnmarshalJsonReader unmarshals content from reader into v.
    24  func UnmarshalJsonReader(reader io.Reader, v interface{}) error {
    25  	return unmarshalJsonReader(reader, v, jsonUnmarshaler)
    26  }
    27  
    28  func unmarshalJsonBytes(content []byte, v interface{}, unmarshaler *Unmarshaler) error {
    29  	var m map[string]interface{}
    30  	if err := jsonx.Unmarshal(content, &m); err != nil {
    31  		return err
    32  	}
    33  
    34  	return unmarshaler.Unmarshal(m, v)
    35  }
    36  
    37  func unmarshalJsonReader(reader io.Reader, v interface{}, unmarshaler *Unmarshaler) error {
    38  	var m map[string]interface{}
    39  	if err := jsonx.UnmarshalFromReader(reader, &m); err != nil {
    40  		return err
    41  	}
    42  
    43  	return unmarshaler.Unmarshal(m, v)
    44  }