ソースを参照

Code review fixes

alien 9 年 前
コミット
6f8dd2115b

+ 1 - 1
csharp/protos/unittest_issues.proto

@@ -119,7 +119,7 @@ message TestJsonFieldOrdering {
 }
 
 message TestJsonName {
-  // json_name field options are not properly handled during deserialization
+  // Message for testing the effects for of the json_name option
   string name = 1;
   string description = 2 [json_name = "desc"];
   string guid = 3 [json_name = "exid"];

+ 1 - 0
csharp/src/Google.Protobuf.Test/IssuesTest.cs

@@ -66,6 +66,7 @@ namespace Google.Protobuf
             var settings = new JsonParser.Settings(10, TypeRegistry.FromFiles(UnittestIssuesReflection.Descriptor));
             var parser = new JsonParser(settings);
 
+            // It is safe to use either original field name or explicitly specified json_name
             Assert.AreEqual(new TestJsonName { Name = "test", Description = "test2", Guid = "test3" },
                 parser.Parse<TestJsonName>("{ \"name\": \"test\", \"desc\": \"test2\", \"guid\": \"test3\" }"));
         }

+ 1 - 2
csharp/src/Google.Protobuf/JsonFormatter.cs

@@ -238,8 +238,7 @@ namespace Google.Protobuf
                     writer.Write(PropertySeparator);
                 }
 
-                WriteString(writer, string.IsNullOrEmpty(accessor.Descriptor.JsonName) ?
-                    ToCamelCase(accessor.Descriptor.Name) : accessor.Descriptor.JsonName);
+                WriteString(writer, accessor.Descriptor.JsonName);
                 writer.Write(NameValueSeparator);
                 WriteValue(writer, value);
 

+ 1 - 1
csharp/src/Google.Protobuf/Reflection/FieldDescriptor.cs

@@ -94,7 +94,7 @@ namespace Google.Protobuf.Reflection
         /// <summary>
         /// The json_name option of the descriptor's target.
         /// </summary>
-        public string JsonName { get { return proto.JsonName; } }
+        public string JsonName { get { return proto.JsonName == "" ? JsonFormatter.ToCamelCase(proto.Name) : proto.JsonName; } }
 
         internal FieldDescriptorProto Proto { get { return proto; } }
 

+ 1 - 3
csharp/src/Google.Protobuf/Reflection/MessageDescriptor.cs

@@ -102,10 +102,8 @@ namespace Google.Protobuf.Reflection
             var map = new Dictionary<string, FieldDescriptor>();
             foreach (var field in fields)
             {
-                map[JsonFormatter.ToCamelCase(field.Name)] = field;
                 map[field.Name] = field;
-                if (!string.IsNullOrEmpty(field.JsonName))
-                    map[field.JsonName] = field;
+                map[field.JsonName] = field;
             }
             return new ReadOnlyDictionary<string, FieldDescriptor>(map);
         }