c# 对json串排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# 对json串排序相关的知识,希望对你有一定的参考价值。

var j1 =
[id:'1001',name:'a',
id:'1006',name:'b',
id:'1003',name:'c,
id:'1007',name:'g,
id:'1005',name:'df,
id:'1009',name:'dfg];

按 id 排序
我要的结果是
var j1=
[id:'1001',name:'a',
id:'1003',name:'df,
id:'1005',name:'df,
id:'1006',name:'b',
id:'1007',name:'g,
id:'1009',name:'dfg];

我的示例代码使用Console控制台程序做的。
你要执行,需要添加System.Web.Extensions的引用。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Script.Serialization;

namespace ConsoleApplication3

class Program

static void Main(string[] args)

string j1 = "[\"id\":\"1001\",name:\"a\",\"id\":\"1006\",\"name\":\"b\",\"id\":\"1003\",\"name\":\"c\",\"id\":\"1007\",\"name\":\"g\",\"id\":\"1005\",\"name\":\"df\",\"id\":\"1009\",\"name\":\"dfg\"]";
javascriptSerializer jser = new JavaScriptSerializer();

var persons = jser.Deserialize<List<Person>>(j1).OrderBy(i => i.id);
foreach (Person p in persons)

Console.WriteLine("ID = 0, Name = 1", p.id, p.name);


var j2 = jser.Serialize(persons);
Console.WriteLine(j2.ToString());



public class Person

public int idget;set;
public string nameget;set;

参考技术A using Newtonsoft.Json;
public class Test
public int id set;get;
public string name set;get;


Newtonsoft.Json 使用第三方类库将传入的Json字符串反序列化成实体类。

List<Test> dataList = JsonConvert.DeserializeObject <List<Test>( 你那个json 字符串 );

然后 linq 排序
dataList = dataList.OrderBy(p=>p.id).ToList();

最后 c# 转化为 json 字符.
string result = JsonConvert.SerializeObject(dataList );本回答被提问者和网友采纳
参考技术B 你是想使用javascript进行排序还是使用反序列化后的C#进行排序?追问

我要用c# 语言

追答

那你把对象反序列化到一个List中,然后再使用Linq对该对象进行排序后,再序列化成为一个json串输出

追问

非常感谢,但是我这方面没任何基础,把代码贴上来? 非常感谢

C# webApi----H5_app后台制作--序列化的类无法接收Json格式的数据

今天使用fiddler软件对webapi发送json格式数据请求时,后台无法接收到数据

首先介绍一下什么是序列化

  • 序列化: 将数据结构或对象转换成二进制串的过程
  • 反序列化:将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程

测试一:可序列化的类具体请求如下:

(1)服务端代码:

 [HttpPost]
        public string Post(aa value)
        {
            return value.LoginName;
        }

(2)类

    public  class aa {
        public string LoginName { get; set; }
        public string LoginPassword { get; set; }
        
    }

请求

结果

如果对类aa序列化

如下:

[Serializable]
    public  class aa {
        public string LoginName { get; set; }
        public string LoginPassword { get; set; }
        
    }

则结果:返回空

解决方法,不采用json格式发送数据改用表单格式提交数据

如下测试:

结果:

 

以上是关于c# 对json串排序的主要内容,如果未能解决你的问题,请参考以下文章

使用动态 LINQ 按一个或多个属性对 JSON 进行排序

C#:按值对 json 对象进行排序

C# 字典到 json - 自动排序

怎样在java代码里获取一个json对象,然后对其进行排序,排好了之后,再返回给json?

对 Pandas 列中的一串数字进行排序

C# DataMember 序列化器排序与预期相反