Categorygithub.com/jkawamoto/structpbconv
modulepackage
0.0.0-20191225002205-7d1a3174c262
Repository: https://github.com/jkawamoto/structpbconv.git
Documentation: pkg.go.dev

# README

structpbconv

MIT License

Converts structpb.Struct to another structure.

Usage

For example, let us assume to convert Payload of a logging.Entry to an ActivityPayload, which is a basic log format in Google Compute Engine.

The type of Payload of logging.Entry is interface{} but it can be casted to *structpb.Struct in most cases.

The following code converts the instance of *structpb.Struct to an instance of ActivityPayload, which is also defined in that code.

Note that to specify a field name, use structpb tag.

import (
	"github.com/golang/protobuf/ptypes/struct"
	"github.com/jkawamoto/structpbconv"
)


type ActivityPayload struct {
	EventTimestampUs string `structpb:"event_timestamp_us"`
	EventType        string `structpb:"event_type"`
	TraceID          string `structpb:"trace_id"`
	Actor            struct {
		User string
	}
	Resource struct {
		Zone string
		Type string
		ID   string
		Name string
	}
	Version      string
	EventSubtype string `structpb:"event_subtype"`
	Operation    struct {
		Zone string
		Type string
		ID   string
		Name string
	}
}


func NewActivityPayload(payload *structpb.Struct) *ActivityPayload {
	var res ActivityPayload
	structpbconv.Convert(payload, &res)
	return &res
}

License

This software is released under the MIT License, see LICENSE.

# Functions

Convert converts a structpb.Struct object to a concrete object.