Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从大文件中删除JSON对象_C#_Json - Fatal编程技术网

C# 从大文件中删除JSON对象

C# 从大文件中删除JSON对象,c#,json,C#,Json,我有一个JSON文件,我希望能够在C#中修改它。我希望能够删除一组数据 [ { "ID": "ID0000001", "Name": "ABCD", "Std": "4" }, { "ID": "ID5335355", "Name": "JKLM", "Std": "6" }, { "ID": "ID53534535", "Name": "XYZ", "Std": "12" } ] 如何删除一个id、名称和标准,如下所示

我有一个JSON文件,我希望能够在C#中修改它。我希望能够删除一组数据

[
{
    "ID": "ID0000001",
    "Name": "ABCD",
    "Std": "4"
},
{
    "ID": "ID5335355",
    "Name": "JKLM",
    "Std": "6"
},
{
    "ID": "ID53534535",
    "Name": "XYZ",
    "Std": "12"
}
]

如何删除一个id、名称和标准,如下所示:

{
    "ID": "ID0000001",
    "Name": "ABCD",
    "Std": "4"
}
[    
{
    "ID": "ID5335355",
    "Name": "JKLM",
    "Std": "6"
},
{
    "ID": "ID53534535",
    "Name": "XYZ",
    "Std": "12"
}
]

删除此json文件后,如下所示:

{
    "ID": "ID0000001",
    "Name": "ABCD",
    "Std": "4"
}
[    
{
    "ID": "ID5335355",
    "Name": "JKLM",
    "Std": "6"
},
{
    "ID": "ID53534535",
    "Name": "XYZ",
    "Std": "12"
}
]

我需要对Json文件执行逐个删除操作。Json文件可能包含数千个结果,我真的需要尽可能高性能的方法


非常感谢您的帮助。

您可以使用
Json.NET
将字符串反序列化为对象。然后使用
Linq
选择想要的项目,然后再次使用
Json.NET
获取
Json
字符串

public class Item
{
   public int ID {get; set;}
   public string Name{get;set;}
   public int Std {get; set;}
}

var items = JsonConvert.DeserializeObject<List<Item>>(JsonString);

var newJsonString = JsonConvert.SerializeObject(items.Where(i => i.ID != "ID0000001"));
公共类项目
{
公共int ID{get;set;}
公共字符串名称{get;set;}
公共int Std{get;set;}
}
var items=JsonConvert.DeserializeObject(JsonString);
var newJsonString=JsonConvert.SerializeObject(items.Where(i=>i.ID!=“ID0000001”);

我认为您需要将JSON转换为对象列表,将其删除并序列化回JSONC这些操作是否可以逐个批处理,还是必须单独执行?也许您应该研究BSON格式。解析itI会更快。我无法理解要删除的代码在哪里,请建议。items.where(i=>i.ID!=“ID0000001”)返回除ID为“ID0000001”的项目外的所有项目。