使用 C# 将 JSON 字符串从 Camel 案例转换为 Pascal 案例
Posted
技术标签:
【中文标题】使用 C# 将 JSON 字符串从 Camel 案例转换为 Pascal 案例【英文标题】:Convert JSON String from Camel case to Pascal case using C# 【发布时间】:2017-11-14 14:58:43 【问题描述】:我有一个 JSON 字符串,它有 Camel-case 形式的 Key,但我需要将 Key 转换为 Pascal-case。
实际的 JSON 字符串
string jsonString = "\"personName\":\"firstName\":\"Emma\",\"lastName\":\"Watson\"";
预期的 JSON 字符串:需要从上面的 JSON 字符串转换。
string jsonString = "\"PersonName\":\"FirstName\":\"Emma\",\"LastName\":\"Watson\"";
请帮助我如何使用 C# 进行转换。
【问题讨论】:
这个链接可能对你有帮助:***.com/questions/9247478/… 这个的变种:C# Capitalizing string, but only after certain punctuation marks @kienct89 - 我会尝试... 这与您 12 小时前非常相似的问题有何不同? ***.com/questions/44500707/… 【参考方案1】:因为我睡不着。
如果定义如下静态类的扩展方法...
public static class JsonExtensions
public static void Capitalize(this JArray jArr)
foreach(var x in jArr.Cast<JToken>().ToList())
var childObj = x as JObject;
if(childObj != null)
childObj.Capitalize();
continue;
var childArr = x as JArray;
if(childArr != null)
childArr.Capitalize();
continue;
public static void Capitalize(this JObject jObj)
foreach(var kvp in jObj.Cast<KeyValuePair<string,JToken>>().ToList())
jObj.Remove(kvp.Key);
var newKey = kvp.Key.Capitalize();
var childObj = kvp.Value as JObject;
if(childObj != null)
childObj.Capitalize();
jObj.Add(newKey, childObj);
return;
var childArr = kvp.Value as JArray;
if(childArr != null)
childArr.Capitalize();
jObj.Add(newKey, childArr);
return;
jObj.Add(newKey, kvp.Value);
public static string Capitalize(this string str)
if (string.IsNullOrEmpty(str))
throw new ArgumentException("empty string");
char[] arr = str.ToCharArray();
arr[0] = char.ToUpper(arr[0]);
return new string(arr);
你可以:
void Main()
string jsonString =
"\"personName\":\"firstName\":\"Emma\",\"lastName\":\"Watson\"";
var jObj = JObject.Parse(jsonString);
jObj.Capitalize();
Console.WriteLine(jObj.ToString()); //yay!
【讨论】:
试图编辑代码以修复一个小错误 - 集合迭代中的返回将阻止其他项目被迭代和大写,因此应该改为continue
。
@eyal 有时间我会回顾一下以上是关于使用 C# 将 JSON 字符串从 Camel 案例转换为 Pascal 案例的主要内容,如果未能解决你的问题,请参考以下文章
如何使用JBoss Fuse(camel)将JSON解组为多个项目?
将 JSON 字符串从一个应用程序传递到另一个应用程序(Windows 8.1 应用程序)C#
如何在 Spring Boot 中为 Camel 配置 Jackson ObjectMapper
Camel + marklogic不使用Marklogic Content Pump