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.

Reply via email to