【问题标题】:Add sorted json back to json object将排序后的 json 添加回 json 对象
【发布时间】:2021-09-17 01:09:34
【问题描述】:

如何将排序后的 json('sortedJson') 添加回下面的整个 json('jObj')?或者是否有其他方法可以执行以下操作?

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


    Code:     
        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': []}";
            var jObj = JsonConvert.DeserializeObject<Informat>(_json);
            var test1 = jObj.Information.OrderBy(x => x.FieldName);
            var sortedJson = JsonConvert.SerializeObject(test1);
           //Add code to merge 'sortedJson' to '_json'
          }
    
    Class:
    public class Informat
    {
        public Information[] Information { get; set; }
        public object[] OtherInfo { get; set; }
    }
    
    public class Information
    {
        public string FieldName { get; set; }
        public string Draft { get; set; }
    }

我不知道如何将排序后的 json 添加回整个 json。你能帮我解决这个问题吗?

【问题讨论】:

  • 真的需要制作双json字符串吗?
  • 只需将有序输出设置回您的类并将整个对象反序列化回 JSON。所以jObj.Information = test1.ToArray(); _json = JsonConvert.SerializeObject(jObj);
  • @DavidG - 谢谢大卫!是的!我应该对此有所了解。工作正常。
  • @DavidG - 当字符串和数字组合超过 5 个字符时,我的排序解决方案不起作用。你能帮忙吗?
  • 不确定你的意思。排序就是排序,与字段的长度无关。

标签: c# json


【解决方案1】:

这是一个使用Array.Sort()的示例

var jObj = JsonConvert.DeserializeObject<Informat>(_json);
Array.Sort(jObj.Information, (x, y) => x.FieldName.CompareTo(y.FieldName));
var sortedJson = JsonConvert.SerializeObject(jObj);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-12
    • 2011-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多