Documentation
¶
Overview ¶
Package gss provides simple functions for serializing/deserializing objects into common formats.
Usage ¶
The simplest usage of gss is to call the DeserializeBytes, DeserializeString, SerializeBytes, and SerializeString functions.
inputObject, err := gss.DeserializeString(string(inputBytesPlain), inputFormat, inputHeader, inputComment, inputLazyQuotes, inputLimit, inputType, verbose)
if err != nil {
fmt.Println(errors.Wrap(err, "error deserializing input using format "+inputFormat))
os.Exit(1)
}
...
str, err := gss.SerializeString(object, "json", header, -1)
if err != nil {
return "", errors.Wrap(err, "error serializing object")
}
Usage with options ¶
You can also call [Serialize|Deserialize][Bytes|String] using an options object.
options := gss.Options{
Header: inputHeader,
Comment: inputComment,
LazyQuotes: inputLazyQuotes,
Limit: 1,
Type: reflect.TypeOf(map[string]interface{}{}),
}
if inputFormat == "jsonl" {
options.Format = "json"
} else {
options.Format = inputFormat
}
for inputLine := range inputLines {
inputObject, err := options.DeserializeBytes(inputLine, verbose)
if err != nil {
errorsChannel <- errors.Wrap(err, "error deserializing input using format "+objectFormat)
continue
}
...
}
Formats ¶
GSS supports the following formats: bson, csv, hcl, hcl2, json, jsonl, properties, tags, toml, yaml.
Index ¶
- Constants
- Variables
- func Convert(input *ConvertInput) ([]byte, error)
- func DeserializeBytes(input *DeserializeBytesInput) (interface{}, error)
- func DeserializeReader(input *DeserializeReaderInput) (interface{}, error)
- func GetType(content []byte, format string) (reflect.Type, error)
- func GetTypeJSON(str string) reflect.Type
- func MustSerializeString(input *SerializeBytesInput) string
- func SerializeBytes(input *SerializeBytesInput) ([]byte, error)
- type ConvertInput
- type DeserializeBytesInput
- type DeserializeReaderInput
- type ErrIncompatibleFormats
- type ErrInvalidComment
- type ErrInvalidKind
- type ErrInvalidLimit
- type ErrUnknownFormat
- type SerializeBytesInput
Constants ¶
const ( NoSkip = 0 // used as SkipLines parameter to indicate no skipping when reading NoLimit = -1 // used to indicate that there is no limit on reading or writing, depending on context. NoComment = "" // used to indicate that there is no comment prefix to consider. )
Variables ¶
var ( // NoHeader is used to indicate that no defined header is given. // Derive the header from the input data. NoHeader = []interface{}{} // Formats is a list of all the formats supported by GSS Formats = []string{"bson", "csv", "tsv", "hcl", "hcl2", "json", "jsonl", "properties", "toml", "yaml"} ErrEmptyRow = errors.New("empty row") )
Functions ¶
func Convert ¶
func Convert(input *ConvertInput) ([]byte, error)
func DeserializeBytes ¶
func DeserializeBytes(input *DeserializeBytesInput) (interface{}, error)
DeserializeBytes reads in an object as string bytes and returns the representative Go instance.
func DeserializeReader ¶
func DeserializeReader(input *DeserializeReaderInput) (interface{}, error)
DeserializeReader reads the serialized object from an io.Reader and returns the representative Go instance.
func GetType ¶
GetType takes in the content of an object as a string and the serialization format. Returns the type using reflection. This type is fixed and can be passed through functions without losing type information (unlike an empty object).
func GetTypeJSON ¶
func MustSerializeString ¶
func MustSerializeString(input *SerializeBytesInput) string
MustSerializeString serializes an object to its representation given by format and panics if there is any error.
func SerializeBytes ¶
func SerializeBytes(input *SerializeBytesInput) ([]byte, error)
SerializeBytes serializes an object to its representation given by format.
Types ¶
type ConvertInput ¶
type ConvertInput struct {
InputBytes []byte
InputFormat string
InputHeader []interface{}
InputComment string
InputLazyQuotes bool
InputSkipLines int
InputLimit int
InputLineSeparator string
InputDropCR bool
InputTrim bool
InputEscapePrefix string
InputUnescapeSpace bool
InputUnescapeNewLine bool
InputUnescapeEqual bool
OutputFormat string
OutputHeader []interface{}
OutputLimit int
OutputPretty bool
OutputSorted bool
OutputReversed bool
OutputKeySerializer stringify.Stringer
OutputValueSerializer stringify.Stringer
OutputLineSeparator string
OutputKeyValueSeparator string
OutputEscapePrefix string
OutputEscapeSpace bool
OutputEscapeNewLine bool
OutputEscapeEqual bool
}
ConvertInput provides the input for the Convert function.
func NewConvertInput ¶
func NewConvertInput(bytes []byte, inputFormat string, outputFormat string) *ConvertInput
type DeserializeBytesInput ¶
type DeserializeBytesInput struct {
Bytes []byte
Format string
Header []interface{}
Comment string
LazyQuotes bool
SkipLines int
SkipBlanks bool
SkipComments bool
Trim bool
Limit int
LineSeparator string
DropCR bool
Type reflect.Type
EscapePrefix string
UnescapeSpace bool
UnescapeNewLine bool
UnescapeColon bool
UnescapeEqual bool
}
DeserializeBytesInput provides the input for the DeserializeBytes function.
type DeserializeReaderInput ¶
type DeserializeReaderInput struct {
Reader io.Reader
Format string
Header []interface{}
Comment string
LazyQuotes bool
SkipLines int
SkipBlanks bool
SkipComments bool
Trim bool
Limit int
LineSeparator string
DropCR bool
Type reflect.Type
EscapePrefix string
UnescapeSpace bool
UnescapeNewLine bool
UnescapeColon bool
UnescapeEqual bool
}
DeserializeReaderInput provides the input for the DeserializeReader function.
type ErrIncompatibleFormats ¶
type ErrIncompatibleFormats struct {
Input string // the name of the input format
Output string // the name of the output format
}
ErrIncompatibleFormats is used when an input format and output format are incompatible.
func (ErrIncompatibleFormats) Error ¶
func (e ErrIncompatibleFormats) Error() string
Error returns the error as a string.
type ErrInvalidComment ¶
type ErrInvalidComment struct {
Value string // the value of the comment
}
ErrInvalidComment is used when an invalid comment string is given.
func (ErrInvalidComment) Error ¶
func (e ErrInvalidComment) Error() string
Error returns the error as a string.
type ErrInvalidKind ¶
func (ErrInvalidKind) Error ¶
func (e ErrInvalidKind) Error() string
type ErrInvalidLimit ¶
type ErrInvalidLimit struct {
Value int // the value of the limit
}
ErrInvalidLimit is used when an invalid limit int is given.
func (ErrInvalidLimit) Error ¶
func (e ErrInvalidLimit) Error() string
Error returns the error as a string.
type ErrUnknownFormat ¶
type ErrUnknownFormat struct {
Name string // the name of the unknown format
}
ErrIncompatibleFormats is used when an unknown format is provided.
func (ErrUnknownFormat) Error ¶
func (e ErrUnknownFormat) Error() string
Error returns the error as a string.
type SerializeBytesInput ¶
type SerializeBytesInput struct {
Object interface{}
Format string
Header []interface{}
Limit int
Pretty bool
Sorted bool
Reversed bool
LineSeparator string
KeyValueSeparator string
KeySerializer func(object interface{}) (string, error)
ValueSerializer func(object interface{}) (string, error)
EscapePrefix string
EscapeSpace bool
EscapeNewLine bool
EscapeEqual bool
EscapeColon bool
ExpandHeader bool
}
SerializeBytesInput provides the input for the SerializeString and SerializeBytes function.