代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
C#
】
JSON按key进行排序
作者:
金龙
/ 发布于
2018/1/24
/
839
JSON按key进行排序
/// <summary> /// JSON对象名称排序 /// </summary> public class JsonSort { /// <summary> /// JSON格式化重新排序 /// </summary> /// <param name="jobj">原始JSON JToken.Parse(string json);</param> /// <param name="obj">初始值Null</param> /// <returns></returns> public static string SortJson(JToken jobj, JToken obj) { if (obj == null) { obj = new JObject(); } List<JToken> list = jobj.ToList<JToken>(); if (jobj.Type == JTokenType.Object)//非数组 { List<string> listsort = new List<string>(); foreach (var item in list) { string name= JProperty.Load(item.CreateReader()).Name; listsort.Add(name); } listsort.Sort(); List<JToken> listTemp = new List<JToken>(); foreach (var item in listsort) { listTemp.Add(list.Where(p=>JProperty.Load(p.CreateReader()).Name==item).FirstOrDefault()); } list = listTemp; //list.Sort((p1, p2) => JProperty.Load(p1.CreateReader()).Name.GetAnsi() - JProperty.Load(p2.CreateReader()).Name.GetAnsi()); foreach (var item in list) { JProperty jp = JProperty.Load(item.CreateReader()); if (item.First.Type == JTokenType.Object) { JObject sub = new JObject(); (obj as JObject).Add(jp.Name, sub); SortJson(item.First, sub); } else if (item.First.Type == JTokenType.Array) { JArray arr = new JArray(); if (obj.Type == JTokenType.Object) { (obj as JObject).Add(jp.Name, arr); } else if (obj.Type == JTokenType.Array) { (obj as JArray).Add(arr); } SortJson(item.First, arr); } else if (item.First.Type != JTokenType.Object && item.First.Type != JTokenType.Array) { (obj as JObject).Add(jp.Name, item.First); } } } else if (jobj.Type == JTokenType.Array)//数组 { foreach (var item in list) { List<JToken> listToken = item.ToList<JToken>(); List<string> listsort = new List<string>(); foreach (var im in listToken) { string name = JProperty.Load(im.CreateReader()).Name; listsort.Add(name); } listsort.Sort(); List<JToken> listTemp = new List<JToken>(); foreach (var im2 in listsort) { listTemp.Add(listToken.Where(p => JProperty.Load(p.CreateReader()).Name == im2).FirstOrDefault()); } list = listTemp; listToken = list; // listToken.Sort((p1, p2) => JProperty.Load(p1.CreateReader()).Name.GetAnsi() - JProperty.Load(p2.CreateReader()).Name.GetAnsi()); JObject item_obj = new JObject(); foreach (var token in listToken) { JProperty jp = JProperty.Load(token.CreateReader()); if (token.First.Type == JTokenType.Object) { JObject sub = new JObject(); (obj as JObject).Add(jp.Name, sub); SortJson(token.First, sub); } else if (token.First.Type == JTokenType.Array) { JArray arr = new JArray(); if (obj.Type == JTokenType.Object) { (obj as JObject).Add(jp.Name, arr); } else if (obj.Type == JTokenType.Array) { (obj as JArray).Add(arr); } SortJson(token.First, arr); } else if (item.First.Type != JTokenType.Object && item.First.Type != JTokenType.Array) { if (obj.Type == JTokenType.Object) { (obj as JObject).Add(jp.Name,token.First); } else if (obj.Type == JTokenType.Array) { item_obj.Add(jp.Name, token.First); } } } if (obj.Type == JTokenType.Array) { (obj as JArray).Add(item_obj); } } } string ret = obj.ToString(Formatting.None); return ret; } }
试试其它关键字
同语言下
.
C#实现的html内容截取
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
.
实现对图片上传的接收
.
去除字符串中的空格,回车,换行符转变成‘;’在按‘
.
按照回车换行符分割字符串
.
文件MD5码 比较,检测文件是否一样
可能有用的
.
C#实现的html内容截取
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
.
实现对图片上传的接收
.
去除字符串中的空格,回车,换行符转变成‘;’在按‘
.
按照回车换行符分割字符串
.
文件MD5码 比较,检测文件是否一样
金龙
贡献的其它代码
(
8
)
.
判断手机横屏和竖屏方向
.
JSON按key进行排序
.
随意两个数的乘积
.
Jquery-与其他Javascript类库冲突解决方案
.
XtraTabControl右键添加关闭当前页、关闭其他页、全部
.
图片转字符
.
二维码解析生成工具类
.
验证sql语句是否正确
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3