Skip to content

cannot unmarshal object google.protobuf.Timestamp #533

Description

@khamamet
% grpcurl -version
grpcurl 1.9.3
syntax = "proto3";

package demo;

option go_package = "./demo;demo";

import "google/protobuf/timestamp.proto";

service Demo {
  rpc Test (TestRequest) returns (TestResponse);
}

message TestRequest {
  google.protobuf.Timestamp date_of_birth = 1;
  string name = 2;
}

message TestResponse {
  string result = 1;
}

simple go-grpc server

package main

import (
	"context"
	"fmt"
	"log"
	"net"

	"test/demo"

	"google.golang.org/grpc"
	"google.golang.org/grpc/reflection"
)

type server struct {
	demo.UnimplementedDemoServer
}

func (s *server) Test(ctx context.Context, req *demo.TestRequest) (*demo.TestResponse, error) {
	dob := "nil"
	if req.DateOfBirth != nil {
		dob = req.DateOfBirth.AsTime().String()
	}
	return &demo.TestResponse{
		Result: fmt.Sprintf("Hello, %s! Date of birth: %s", req.Name, dob),
	}, nil
}

func main() {
	lis, err := net.Listen("tcp", ":8082")
	if err != nil {
		log.Fatalf("listen: %v", err)
	}
	grpcServer := grpc.NewServer()
	demo.RegisterDemoServer(grpcServer, &server{})
	reflection.Register(grpcServer)
	fmt.Println("gRPC listening on :8082")
	if err := grpcServer.Serve(lis); err != nil {
		log.Fatalf("serve: %v", err)
	}
}

% protoc --version
libprotoc 32.1

% grpcurl -plaintext -d '{"name":"Ivan", "date_of_birth": {"seconds": 820454400, "nanos": 0}}' localhost:8082 demo.Demo/Test
Error invoking method "demo.Demo/Test": error getting request data: json: cannot unmarshal object into Go value of type string

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions