Okay, I've tried it with your message - and it deserializes that JSON just 
fine for me. I've updated the issue - could you look there and reply to the 
questions?
(It would be better to keep it on github than on the mailing list.)

Jon


On Tuesday, 10 January 2017 08:03:48 UTC-5, Jon Skeet wrote:
>
> 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