github.com/angenalZZZ/gofunc@v0.0.0-20210507121333-48ff1be3917b/data/file.go (about)

     1  package data
     2  
     3  import (
     4  	"bytes"
     5  
     6  	json "github.com/json-iterator/go"
     7  )
     8  
     9  // ObjectJSON gets json object map[string]interface{}
    10  func ObjectJSON(buf []byte) (map[string]interface{}, error) {
    11  	var record map[string]interface{}
    12  	err := json.Unmarshal(buf, &record)
    13  	return record, err
    14  }
    15  
    16  // ListJSON gets json list []map[string]interface{}
    17  func ListJSON(buf []byte) ([]map[string]interface{}, error) {
    18  	var records []map[string]interface{}
    19  	err := json.Unmarshal(buf, &records)
    20  	return records, err
    21  }
    22  
    23  // ListData gets json list of item RawMessage []byte
    24  func ListData(buf []byte) ([][]byte, error) {
    25  	var s [][]byte
    26  	buf = bytes.TrimSpace(buf)
    27  	if buf[0] == '[' && buf[len(buf)-1] == ']' {
    28  		var records []map[string]interface{}
    29  		err := json.Unmarshal(buf, &records)
    30  		if err != nil {
    31  			return s, err
    32  		}
    33  		for _, item := range records {
    34  			b, _ := json.Marshal(item)
    35  			s = append(s, b)
    36  		}
    37  	} else {
    38  		s = append(s, buf)
    39  	}
    40  	return s, nil
    41  }