Thanks for reporting this - I've copied it into a github
issue: https://github.com/google/protobuf/issues/2574
I'll look into it as soon as I can. (Although I'm at a conference this
week, making it slightly tricky.)
I thought I had tests for all of the well-known types, so it's certainly
surprising...
Jon
On Tuesday, 10 January 2017 04:59:51 UTC-5, Ajay Bhandari wrote:
>
> Hi,
> I have simple proto definition like below and through the protoc compiler
> I am able to use the generated C# message class to covert object to byte
> array, de-serialize the object from byte array using the message parser etc.
>
> When I try to use the JSON Formatter & parser, I am able to serialize the
> same to JSON string, but during deserialization the JSON parser throws an
> error about not able to convert System.UInt32 (.NET) to Google.
>
> Will appreciate any help in resolving this. I am using
> Google.Protobuf.3.1.0 and Google.Protobuf.Tools.3.1.0 nuget packages
>
> Thanks.
>
>
> *PROTO=====*
> syntax = "proto3";
> package testpack;
> option csharp_namespace = "Test.v1";
>
> // import proto definitions from google protobuf
> import "wrappers.proto";
> import "timestamp.proto";
>
> message TestMessage {
> google.protobuf.UInt32Value testUintProperty = 1;
> google.protobuf.Int32Value testIntProperty = 2;
> google.protobuf.BoolValue testBoolProperty = 3;
> google.protobuf.Timestamp timestamp = 4;
> }
>
>
> *CODE SNIPPTES (C#)==================*
> // this works
> var testMessage = <some method to create TestMessage object using the
> generated TestMessage class>
> var tmBytes = testMessage.ToByteArray();
> var deserializedTestMessage = TestMessage.Parser.ParseFrom(tmBytes);
>
> // this works - json below
> JsonFormatter jsf = new JsonFormatter(new
> JsonFormatter.Settings(true));
> string jsonString = jsf.Format(testMessage);
>
> // this throws error - see exception details below
> var deserializedTestMessageFromJson =
> JsonParser.Default.Parse<TestMessage>(jsonString);
>
>
> *JSON====*
> { "testUintproperty": 1024, "testIntproperty": 300, "testBoolproperty":
> true, "timestamp": "2017-01-10T09:46:53.218325200Z" }
>
>
>
> *SYSTEMEXCEPTION MESSAGE==========================*
> Unable to cast object of type 'System.UInt32' to type
> 'Google.Protobuf.WellKnownTypes.UInt32Value'.
>
>
> *STACK TRACE===========*
> at lambda_method(Closure , IMessage , Object )
> at Google.Protobuf.Reflection.SingleFieldAccessor.SetValue(IMessage
> message, Object value)
> at Google.Protobuf.JsonParser.MergeField(IMessage message,
> FieldDescriptor field, JsonTokenizer tokenizer)
> at Google.Protobuf.JsonParser.Merge(IMessage message, JsonTokenizer
> tokenizer)
> at Google.Protobuf.JsonParser.Merge(IMessage message, TextReader
> jsonReader)
> at Google.Protobuf.JsonParser.Parse[T](TextReader jsonReader)
> at Google.Protobuf.JsonParser.Parse[T](String json)
> at
> DeviceSimulator.Program.<SendDeviceToCloudTestMessagesAsync>d__3.MoveNext()
> ...
>
--
You received this message because you are subscribed to the Google Groups
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/d/optout.