github.com/zhangdapeng520/zdpgo_json@v0.1.5/json.go (about)

     1  package zdpgo_json
     2  
     3  import (
     4  	"os"
     5  
     6  	"github.com/zhangdapeng520/zdpgo_json/jsoniter"
     7  	"github.com/zhangdapeng520/zdpgo_json/query"
     8  )
     9  
    10  var (
    11  	json = jsoniter.ConfigCompatibleWithStandardLibrary
    12  )
    13  
    14  // Json 处理json的核心对象
    15  type Json struct {
    16  	Query *query.Query // 查询核心对象
    17  
    18  	// 方法列表
    19  	Dump  func(filePath string, obj interface{}) error
    20  	Load  func(filePath string, obj interface{}) error
    21  	Dumps func(obj interface{}) (string, error)
    22  	Loads func(str string, obj interface{}) error
    23  }
    24  
    25  // New 创建新的处理json的对象示例
    26  func New() *Json {
    27  	j := Json{}
    28  
    29  	// 实例化查询对象
    30  	j.Query = query.NewQuery()
    31  
    32  	// 实例化方法
    33  	j.Dump = Dump
    34  	j.Load = Load
    35  	j.Dumps = Dumps
    36  	j.Loads = Loads
    37  
    38  	// 返回对象
    39  	return &j
    40  }
    41  
    42  // Dumps 将Golang对象转换为json字符串
    43  func Dumps(obj interface{}) (string, error) {
    44  	rs, err := json.Marshal(obj)
    45  	return string(rs), err
    46  }
    47  
    48  // Loads 将字符串转换为Golang对象
    49  func Loads(str string, obj interface{}) error {
    50  	err := json.Unmarshal([]byte(str), obj)
    51  	return err
    52  }
    53  
    54  // Dump 将Golang对象写入到json文件
    55  func Dump(filePath string, obj interface{}) error {
    56  
    57  	// 创建json文件
    58  	filePtr, err := os.Create(filePath)
    59  	if err != nil {
    60  		return err
    61  	}
    62  	defer filePtr.Close()
    63  
    64  	// 写入json数据
    65  	encoder := json.NewEncoder(filePtr)
    66  	err = encoder.Encode(obj)
    67  	return err
    68  }
    69  
    70  // Load 将json文件读取并转换为Golang对象
    71  func Load(filePath string, obj interface{}) error {
    72  
    73  	// 打开json文件
    74  	filePtr, err := os.Open(filePath)
    75  	if err != nil {
    76  		return err
    77  	}
    78  	defer filePtr.Close()
    79  
    80  	// 读取json文件
    81  	decoder := json.NewDecoder(filePtr)
    82  	err = decoder.Decode(obj)
    83  	return err
    84  }