gpt4 book ai didi

c# - 根据 C# 中的条件从 JSON 中删除元素

转载 作者:太空狗 更新时间:2023-10-29 23:09:05 26 4
gpt4 key购买 nike

我有一个 JSON 字符串,我希望能够在 C# 中修改它。我希望能够删除一组基于其中一个子值何时为特定值的数据。

采取以下措施

 {
"responseHeader":{
"status":0,
"QTime":0,
"params":{
"explainOther":"",
"fl":"*,score",
"indent":"on",
"start":"0",
"q":"*:*",
"hl.fl":"",
"qt":"",
"wt":"json",
"fq":"",
"version":"2.2",
"rows":"2"}
},
"response":{"numFound":2,"start":0,"maxScore":1.0,"docs":
[{
"id":"438500feb7714fbd9504a028883d2860",
"name":"John",
"dateTimeCreated":"2012-02-07T15:00:42Z",
"dateTimeUploaded":"2012-08-09T15:30:57Z",
"score":1.0
},
{
"id":"2f7661ae3c7a42dd9f2eb1946262cd24",
"name":"David",
"dateTimeCreated":"2012-02-07T15:02:37Z",
"dateTimeUploaded":"2012-08-09T15:45:06Z",
"score":1.0
}]
}}

上面显示了两个响应结果。我希望能够在其子“id”值匹配时删除整个父响应结果组,例如,如果我的 id 是“2f7661ae3c7a42dd9f2eb1946262cd24”,我希望第二组被删除,因此我的结果如下所示.

{
"responseHeader":{
"status":0,
"QTime":0,
"params":{
"explainOther":"",
"fl":"*,score",
"indent":"on",
"start":"0",
"q":"*:*",
"hl.fl":"",
"qt":"",
"wt":"json",
"fq":"",
"version":"2.2",
"rows":"2"}},
"response":{"numFound":2,"start":0,"maxScore":1.0,"docs":[
{
"id":"438500feb7714fbd9504a028883d2860",
"name":"John",
"dateTimeCreated":"2012-02-07T15:00:42Z",
"dateTimeUploaded":"2012-08-09T15:30:57Z",
"score":1.0
}]
}}

我需要对 Json 文件执行多次删除操作。 Json 文件可能包含数千个结果,我确实需要尽可能高效的方式。

非常感谢任何帮助。

最佳答案

在过去 10 分钟左右的时间里,我一直在尝试将其压缩为更好的 LINQ 语句,但已知 ID 列表本质上会改变每个元素的评估方式这一事实意味着我可能不会这样做实现这一目标。

        var jObj = (JObject)JsonConvert.DeserializeObject(json);
var docsToRemove = new List<JToken>();
foreach (var doc in jObj["response"]["docs"])
{
var id = (string)doc["id"];
if (knownIds.Contains(id))
{
docsToRemove.Add(doc);
}
else
{
knownIds.Add(id);
}
}
foreach (var doc in docsToRemove)
doc.Remove();

这似乎适用于我用来测试的蹩脚的小控制台应用程序,但我的测试仅限于上面的示例数据,所以如果有任何问题,请继续发表评论,以便我可以解决它们。

就其值(value)而言,这基本上会根据您输入的元素数量以线性时间运行,这可能意味着您将获得更多的算法性能,而不会对这个问题感到搞笑。使用任务并行库将每页约 100 条记录旋转到它自己的任务中,调用一个工作程序来处理它自己的小页面并返回清理后的 JSON 字符串浮现在脑海中。如果你在多核机器上运行它肯定会更快,我很乐意提供一些代码来帮助你开始,但对于所呈现的问题范围来说,这也是一个巨大的过度工程。

关于c# - 根据 C# 中的条件从 JSON 中删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13478767/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com