You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# 如何按JSON对象中FieldName字段对数组元素进行升序/降序排序

问题排查与修复方案

根因说明

  • 实体类名与属性名重名冲突:你定义的数组元素类名称为Information,同时外层实体类Informat下的数组成员也命名为Information,Newtonsoft.Json反射解析类型映射时会出现识别异常,触发反序列化报错。
  • JSON格式不规范(可选触发原因):你提供的JSON样例中每个对象末尾存在多余尾逗号,不符合标准JSON规范,如果你实际解析的是带尾逗号的源数据也会触发反序列化失败。

修复步骤

1. 修改实体类避免命名冲突

将数组元素类改名,消除和属性名的重名歧义:

public class Informat
{
    // 属性名保持和JSON的key一致
    public InformationItem[] Information { get; set; }
    public object[] OtherInfo { get; set; }
}

// 修改类名避免冲突
public class InformationItem
{
    public string FieldName { get; set; }
    public string Draft { get; set; }
}

2. 调整业务代码,兼容异常JSON格式

反序列化时添加配置,兼容单引号、尾逗号等非标准JSON格式:

static void Main(string[] args)
{
    string _json = "{'Information': [{'FieldName': 'Area04','Draft': 'Unknown'},{'FieldName': 'Area02','Draft': 'Unknown'},{'FieldName': 'Area01','Draft': 'Unknown'},{'FieldName': 'Area03','Draft': 'Unknown'}],'OtherInfo': []}";
    
    // 配置反序列化参数,兼容非标准JSON格式
    var deserializeSettings = new JsonSerializerSettings
    {
        // 忽略JSON尾逗号,Newtonsoft.Json 12.0+支持,低版本可删除该行
        TrailingCommasHandling = TrailingCommasHandling.Ignore,
        // 允许单引号作为JSON引号
        QuoteChar = '\''
    };
    
    var jObj = JsonConvert.DeserializeObject<Informat>(_json, deserializeSettings);
    // 升序排序,需要降序可替换为OrderByDescending
    var sortedInfo = jObj.Information.OrderBy(x => x.FieldName).ToArray();
    // 回写排序结果到外层对象
    jObj.Information = sortedInfo;
    
    // 序列化输出结果,Formatting.Indented可格式化输出方便查看
    string finalJson = JsonConvert.SerializeObject(jObj, Formatting.Indented);
    Console.WriteLine(finalJson);
}

效果验证

排序后的Information数组输出结果如下:

{
  "Information": [
    {
      "FieldName": "Area01",
      "Draft": "Unknown"
    },
    {
      "FieldName": "Area02",
      "Draft": "Unknown"
    },
    {
      "FieldName": "Area03",
      "Draft": "Unknown"
    },
    {
      "FieldName": "Area04",
      "Draft": "Unknown"
    }
  ],
  "OtherInfo": []
}

内容的提问来源于stack exchange,提问作者DeSon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 07:03:04