色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

go Protobuf轉(zhuǎn)Json

錢艷冰1年前8瀏覽0評論

Protobuf是Google的一種序列化數(shù)據(jù)結(jié)構(gòu)的方法,它可以更高效地傳輸和存儲數(shù)據(jù)。然而,在將數(shù)據(jù)用于網(wǎng)絡傳輸或前端展示時,我們可能需要將Protobuf轉(zhuǎn)換為JSON格式。

幸運的是,Google提供了一個官方庫,可以幫助我們在Go語言中將Protobuf轉(zhuǎn)換為JSON。該庫名為"protobuf/jsonpb",我們可以使用它來實現(xiàn)Protobuf到JSON的轉(zhuǎn)換。

package main
import (
	"encoding/json"
	"fmt"
"github.com/golang/protobuf/jsonpb"
	"github.com/golang/protobuf/proto"
)
type Person struct {
	Name string
	Age  int32
}
func main() {
	person := &Person{Name: "John", Age: 30}
	jsonData, err := ProtoToJson(person)
	if err != nil {
fmt.Println(err)
return
	}
	fmt.Println(string(jsonData))
}
func ProtoToJson(person *Person) ([]byte, error) {
	marshaler := &jsonpb.Marshaler{OrigName: true}
	personProto := &pb.Person{
Name: person.Name,
Age:  person.Age,
	}
	return marshaler.MarshalToString(personProto)
}

在上面的代碼示例中,我們首先定義了一個Person結(jié)構(gòu)體,其中包含名字和年齡字段。然后,我們定義了ProtoToJson函數(shù),它接受Person結(jié)構(gòu)體作為輸入,并返回一個字節(jié)數(shù)組和一個錯誤。在該函數(shù)中,我們使用protobuf/jsonpb庫將Person結(jié)構(gòu)體轉(zhuǎn)換為Protobuf類型的Person,然后使用jsonpb.Marshaler將其轉(zhuǎn)換為JSON格式的字符串。

最后,我們在main函數(shù)中創(chuàng)建了一個Person結(jié)構(gòu)體實例,將其傳遞給ProtoToJson函數(shù),并將返回的JSON數(shù)據(jù)打印到控制臺。

總之,使用protobuf/jsonpb庫可以幫助我們在Go語言中將Protobuf轉(zhuǎn)換為JSON格式,從而更好地滿足不同的數(shù)據(jù)傳輸需求。