如何在 C# 中删除 Json 特定元素?

Posted

技术标签:

【中文标题】如何在 C# 中删除 Json 特定元素?【英文标题】:How to delete Json particular element in C#? 【发布时间】: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 文件中的第一个学生。但我不能删除。那么如何删除呢?

【问题讨论】:

【参考方案1】:

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

    将 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();
    将 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。

以上是关于如何在 C# 中删除 Json 特定元素?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中获取 json 属性的特定部分?

如何在 C# 中删除 Json 数据的标头名称

如何检查 Json 是不是匹配特定的 C# 类型?

如何在 JSON 返回 C# 中删除列名

如何在 c# 中添加特定条件项后对特定元素进行分组 linq to sql

请教C#中的List<T>,删除list中特定元素的方法