【问题标题】:How to delete Json particular element in C#?如何在 C# 中删除 Json 特定元素?
【发布时间】:2022-01-20 23:31:23
【问题描述】:
 public class students
    {
        public int ID { get; set; }
        public string fName { get; set; }
        public string mName { get; set; }
        public string lName { get; set; }
        public string Dept { get; set; }
        public string Degree { get; set; }
        public _Semister[] ComplitedSemister { get; set; }
       
        public string SemesterCode { get; set; }
        public string Year { get; set; }
        
    }
    
    public class _Semister
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Instructor { get; set; }
        public int Credit { get; set; }
    }

这是我的学生课

[
  {
    "ID": 101,
    "fName": "Kamal",
    "mName": "Faheem",
    "lName": "Khabib",
    "Dept": "CSE",
    "Degree": "BSC",
    "ComplitedSemister": [
      {
        "Id": 2001,
        "Name": "OOP",
        "Instructor": "Jamal",
        "Credit": 2354
      }
    ],
    "SemesterCode": "Summer",
    "Year": "2014"
  },
  {
    "ID": 454,
    "fName": "fdgfdg",
    "mName": "sgdfsd",
    "lName": "sdfgg",
    "Dept": "fdgsdf",
    "Degree": "sfdgdf",
    "ComplitedSemister": [
      {
        "Id": 324,
        "Name": "cgbf",
        "Instructor": "dgfd",
        "Credit": 54
      }
    ],
    "SemesterCode": "Ummer",
    "Year": "3423"
  }

]

这是我的 Json 文件。我想删除特定 ID 的所有元素。例如,对于 ID = 101,我想删除此 ID 的全部数据。所以下一个 ID = 454 成为 json 文件中的第一个学生。但我不能删除。那么如何删除呢?

【问题讨论】:

    标签: json c#-4.0 json.net


    【解决方案1】:

    你可以通过 2 种方式来完成(我使用的是 Newtonsoft.Json。你可以通过 Nuget 安装它)

    1. 将 Json 解析为 JArray。从数组中删除项目。序列化 JArray。
    //your json
    var json="[{\"ID\":101,\"fName\":\"Kamal\",\"mName\":\"Faheem\",\"lName\":\"Khabib\",\"Dept\":\"CSE\",\"Degree\":\"BSC\",\"ComplitedSemister\":[{\"Id\":2001,\"Name\":\"OOP\",\"Instructor\":\"Jamal\",\"Credit\":2354}],\"SemesterCode\":\"Summer\",\"Year\":\"2014\"},{\"ID\":454,\"fName\":\"fdgfdg\",\"mName\":\"sgdfsd\",\"lName\":\"sdfgg\",\"Dept\":\"fdgsdf\",\"Degree\":\"sfdgdf\",\"ComplitedSemister\":[{\"Id\":324,\"Name\":\"cgbf\",\"Instructor\":\"dgfd\",\"Credit\":54}],\"SemesterCode\":\"Ummer\",\"Year\":\"3423\"}]";
    
    var jArray=JArray.Parse(json);
    
    var itemToRemove = (JToken) jArray.Where(a => (int) a["ID"]==101).First();  
    jArray.Remove(itemToRemove);
    
    json=jArray.ToString();
    
    1. 将 JSON 反序列化为强类型的项目列表。从列表中删除项目。对列表进行序列化。
    var json= ...your json..;
    
    var jDeserialized= JsonConvert.DeserializeObject<List<students>>(json);
    var removeItem=jDeserialized.Where(d =>d.Id==101 ).First();
    jDeserialized.Remove(removeItem);
    json=JsonConvert.SerializeObject (jDeserialized, Newtonsoft.Json.Formatting.Indented);
    

    结果 json

    [
      {
        "ID": 454,
        "fName": "fdgfdg",
        "mName": "sgdfsd",
        "lName": "sdfgg",
        "Dept": "fdgsdf",
        "Degree": "sfdgdf",
        "ComplitedSemister": [
          {
            "Id": 324,
            "Name": "cgbf",
            "Instructor": "dgfd",
            "Credit": 54
          }
        ],
        "SemesterCode": "Ummer",
        "Year": 3423
      }
    ]
    

    【讨论】:

    • var jArray=JArray.Parse(json);此行中的 json 是什么。我在哪里声明这个..你能解飞机吗?我是初学者。
    • @FarhatSnigdho Json 是您在问题中发布的 json 文本。我也发布了结果 json。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-07
    • 1970-01-01
    • 2015-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多