本文介绍了使用C#将JSON字符串从Camel大小写转换为Pascal大小写的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个JSON字符串,它具有Camel-case形式的Key,但是我需要将Key转换为Pascal-case.
I'm having a JSON string, it has Key in the form of Camel-case but I need to convert the Key to Pascal-case.
实际JSON字符串
string jsonString = "{\"personName\":{\"firstName\":\"Emma\",\"lastName\":\"Watson\"}}";
预期的JSON字符串:需要从上述JSON字符串转换.
Expected JSON String : Needs to convert from the above JSON string.
string jsonString = "{\"PersonName\":{\"FirstName\":\"Emma\",\"LastName\":\"Watson\"}}";
请协助我如何使用C#进行转换.
Kindly assist me how to convert this using C#.
推荐答案
因为我无法入睡.
如果定义以下静态方法的扩展类...
If you define the following static class of extension methods...
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!
}
这篇关于使用C#将JSON字符串从Camel大小写转换为Pascal大小写的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!