当前位置: 首页 > 编程语言 > C#

C#SortJSONStringKey分享

时间:2023-04-10 22:41:24 C#

C#SortJSONStringKey我要转换JSON字符串"{"birthday":"1988-03-18","address":{"state":24,"city":8341,"country":1}}"to"{"address":{"city":8341,"country":1,"state":24},"birthday":"1988-03-18“}”注意:我没有使用排序版本进行通信(因为键顺序无关紧要),我需要一个排序版本来执行本地测试(通过比较JSON字符串)。编辑:I4V指出了一个使用Json.Net的解决方案,我宁愿使用一个不需要包含任何第三方库的解决方案(实际上我在我的应用程序中使用内置的System.Json)我发布了一篇文章关于提供的解决方案的I4V要点+一些测试。谢谢你们。我将使用Json.Netstringjson=@"{""birthday"":""1988-03-18"",""address"":{""state"":24,""city"":8341,""国家"":1}}";varjObj=(JObject)JsonConvert.反序列化对象(json);排序(jObj);字符串newJson=jObj.ToString();voidSort(JObjectjObj){varprops=jObj.Properties().ToList();foreach(varpropinprops){prop.Remove();}foreach(varpropinprops.OrderBy(p=>p.Name)){jObj.Add(prop);如果(prop.Value是JObject)排序((JObject)prop.Value);编辑尝试使用System.Json但我不确定OrderByDescending(或OrderBy)。varjObj=(System.Json.JsonObject)System.Json.JsonObject.Parse(json);排序2(jObj);varnewJson=jObj.ToString();voidSort2(System.Json.JsonObjectjObj){varprops=jObj.ToList();foreach(varpropinprops){jObj.Remove(prop.Key);}foreach(varpropinprops.OrderByDescending(p=>p.Key)){jObj.Add(prop);if(prop.ValueisSystem.Json.JsonObject)Sort2((System.Json.JsonObject)prop.Value);通过使用此方法,您可以使用json数据检索动态对象在DynamicJsonConvertervard=newSortedDictionary(dictionary)中创建一个SortedDictionary;//TODO:排序内部对象的代码returnnewDynamicJsonObject(d);然后你可以使用stringjsonStr="{"B":"2","A":"1"}";JavaScriptSerializerjss=newJavaScriptSerializer();jss.RegisterConverters(newJavaScriptConverter[]{newDynamicJsonConverter()});动态json=jss.Deserialize(jsonStr,typeof(object))为动态;stringresult=newJavaScriptSerializer().Serialize((jsonasDynamicJsonObject).Dictionary);结果将有预期的输出。我知道这可能有点晚了,但是如果您需要对内部数据数组进行排序(我只是需要它):staticvoidSort(JObjectjObj){varprops=jObj.Properties().ToList();foreach(varpropinprops){prop.Remove();}foreach(varpropinprops.OrderBy(p=>p.Name)){jObj.Add(prop);如果(prop.Value是JObject)排序((JObject)prop.Value);如果(prop.Value是JArray){Int32iCount=prop.Value.Count();for(Int32iIterator=0;iIterator内容,如果对您有用,需要了解更多C#学习教程,希望您多多关注---本文收集自网络,不代表立场。如涉及侵权,请点击维权联系管理员删除,如需转载请注明出处: