aboutsummaryrefslogtreecommitdiffhomepage
path: root/csharp/src/Google.Protobuf
diff options
context:
space:
mode:
authorGravatar alien <the-alien@live.ru>2016-03-17 15:19:04 +0300
committerGravatar alien <the-alien@live.ru>2016-03-18 22:59:50 +0300
commit0d32ab37fa94134427478d6776108e7cdb3e5e15 (patch)
treeb0f5e3c9f9bf9097f739b98d0503d659abe974a9 /csharp/src/Google.Protobuf
parent5e933847cc9e7826f1a9ee8b3dc1df4960b1ea5d (diff)
csharp: add support for the json_name option
Conflicts: csharp/src/Google.Protobuf/JsonFormatter.cs
Diffstat (limited to 'csharp/src/Google.Protobuf')
-rw-r--r--csharp/src/Google.Protobuf/JsonFormatter.cs7
-rw-r--r--csharp/src/Google.Protobuf/Reflection/FieldDescriptor.cs6
-rw-r--r--csharp/src/Google.Protobuf/Reflection/MessageDescriptor.cs2
3 files changed, 13 insertions, 2 deletions
diff --git a/csharp/src/Google.Protobuf/JsonFormatter.cs b/csharp/src/Google.Protobuf/JsonFormatter.cs
index eb959c9f..1b5349e9 100644
--- a/csharp/src/Google.Protobuf/JsonFormatter.cs
+++ b/csharp/src/Google.Protobuf/JsonFormatter.cs
@@ -237,11 +237,14 @@ namespace Google.Protobuf
{
writer.Write(PropertySeparator);
}
- WriteString(writer, ToCamelCase(accessor.Descriptor.Name));
+
+ WriteString(writer, string.IsNullOrEmpty(accessor.Descriptor.JsonName) ?
+ ToCamelCase(accessor.Descriptor.Name) : accessor.Descriptor.JsonName);
writer.Write(NameValueSeparator);
WriteValue(writer, value);
+
first = false;
- }
+ }
return !first;
}
diff --git a/csharp/src/Google.Protobuf/Reflection/FieldDescriptor.cs b/csharp/src/Google.Protobuf/Reflection/FieldDescriptor.cs
index c6caaec6..8cfdb779 100644
--- a/csharp/src/Google.Protobuf/Reflection/FieldDescriptor.cs
+++ b/csharp/src/Google.Protobuf/Reflection/FieldDescriptor.cs
@@ -90,6 +90,12 @@ namespace Google.Protobuf.Reflection
/// </summary>
public override string Name { get { return proto.Name; } }
+
+ /// <summary>
+ /// The json_name option of the descriptor's target.
+ /// </summary>
+ public string JsonName { get { return proto.JsonName; } }
+
internal FieldDescriptorProto Proto { get { return proto; } }
/// <summary>
diff --git a/csharp/src/Google.Protobuf/Reflection/MessageDescriptor.cs b/csharp/src/Google.Protobuf/Reflection/MessageDescriptor.cs
index f5798d1e..63f168ca 100644
--- a/csharp/src/Google.Protobuf/Reflection/MessageDescriptor.cs
+++ b/csharp/src/Google.Protobuf/Reflection/MessageDescriptor.cs
@@ -104,6 +104,8 @@ namespace Google.Protobuf.Reflection
{
map[JsonFormatter.ToCamelCase(field.Name)] = field;
map[field.Name] = field;
+ if (!string.IsNullOrEmpty(field.JsonName))
+ map[field.JsonName] = field;
}
return new ReadOnlyDictionary<string, FieldDescriptor>(map);
}