Converting Protocol Buffers Messages to and from JSON in Go: Difference between revisions
Jump to navigation
Jump to search
Line 19: | Line 19: | ||
import ( | import ( | ||
"fmt" | "fmt" | ||
" | "strings" | ||
"example.com/blue/pkg/somepkgpb" | "example.com/blue/pkg/somepkgpb" | ||
"github.com/golang/protobuf/ | "github.com/golang/protobuf/jsonpb" | ||
) | ) | ||
Line 31: | Line 32: | ||
} | } | ||
jsonMarshaler := &jsonpb.Marshaler{} | |||
s, err := jsonMarshaler.MarshalToString(sm) | |||
if err != nil { ... } | if err != nil { ... } | ||
fmt.Printf("JSON representation: %s\n", s) | |||
sm2 := &somepkgpb.SomeMessage{} | sm2 := &somepkgpb.SomeMessage{} | ||
err = | jsonUnmarshaler := &jsonpb.Unmarshaler{} | ||
err = jsonUnmarshaler.Unmarshal(strings.NewReader(s), sm2) | |||
if err != nil { ... } | if err != nil { ... } | ||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 23:05, 8 May 2024
Internal
Overview
This example uses this message definition:
message SomeMessage {
int32 id = 1;
bool is_valid = 2;
string name = 3;
repeated string sample_list = 4;
}
The Go code is generated following the instructions from:
To and From JSON
import (
"fmt"
"strings"
"example.com/blue/pkg/somepkgpb"
"github.com/golang/protobuf/jsonpb"
)
sm := &somepkgpb.SomeMessage{
Id: 1,
IsValid: true,
Name: "something",
SampleList: []string{"a", "b", "c"},
}
jsonMarshaler := &jsonpb.Marshaler{}
s, err := jsonMarshaler.MarshalToString(sm)
if err != nil { ... }
fmt.Printf("JSON representation: %s\n", s)
sm2 := &somepkgpb.SomeMessage{}
jsonUnmarshaler := &jsonpb.Unmarshaler{}
err = jsonUnmarshaler.Unmarshal(strings.NewReader(s), sm2)
if err != nil { ... }