如何在 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 特定元素?的主要内容,如果未能解决你的问题,请参考以下文章