You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell中移除JSON对象中属性的特定值条目

移除JSON数组中指定值的条目

你已经掌握用Remove()方法删除JSON对象的特定属性,但现在需要移除JSON数组中Name为"test"的条目。

原始JSON:

{
    "name":  "new-report",
    "resources":  {
                      "repositories":  [
                                           {
                                               "Name":  "test"
                                           },
                                           {
                                               "Name":  "CentralLogger-Nuget-Local"
                                           }
                                     ]  
                  }
 }

目标JSON:

{
    "name":  "new-report",
    "resources":  {
                      "repositories":  [
                                           {
                                               "Name":  "CentralLogger-Nuget-Local"
                                           }
                                     ]  
                  }
 }

下面提供两种常用的实现方式:


方法一:使用Newtonsoft.Json(Json.NET)

这是.NET生态中广泛使用的第三方JSON库,需要先通过NuGet安装Newtonsoft.Json包。

using Newtonsoft.Json.Linq;

// 原始JSON字符串
string originalJson = @"
{
    ""name"":  ""new-report"",
    ""resources"":  {
                      ""repositories"":  [
                                           {
                                               ""Name"":  ""test""
                                           },
                                           {
                                               ""Name"":  ""CentralLogger-Nuget-Local""
                                           }
                                     ]  
                  }
 }";

// 解析JSON为JObject
JObject jsonObj = JObject.Parse(originalJson);

// 获取repositories数组
JArray repos = (JArray)jsonObj["resources"]["repositories"];

// 筛选保留Name不等于"test"的条目,替换原数组
repos.ReplaceAll(repos.Where(item => (string)item["Name"] != "test"));

// 输出处理后的JSON
string resultJson = jsonObj.ToString();

方法二:使用System.Text.Json(.NET内置)

如果使用.NET Core 3.0+或.NET 5+,可以直接用内置的System.Text.Json库,无需额外安装包。

using System.Text.Json;
using System.Text.Json.Nodes;

// 原始JSON字符串
string originalJson = @"
{
    ""name"":  ""new-report"",
    ""resources"":  {
                      ""repositories"":  [
                                           {
                                               ""Name"":  ""test""
                                           },
                                           {
                                               ""Name"":  ""CentralLogger-Nuget-Local""
                                           }
                                     ]  
                  }
 }";

// 解析JSON为JsonObject
JsonObject jsonObj = JsonNode.Parse(originalJson).AsObject();

// 获取repositories数组
JsonArray repos = jsonObj["resources"].AsObject()["repositories"].AsArray();

// 筛选出符合条件的条目,重新构建数组
var filteredItems = repos.Where(item => item.AsObject()["Name"].GetValue<string>() != "test").ToList();
repos.Clear();
foreach (var item in filteredItems)
{
    repos.Add(item);
}

// 输出格式化后的目标JSON
string resultJson = jsonObj.ToJsonString(new JsonSerializerOptions { WriteIndented = true });

内容的提问来源于stack exchange,提问作者wehelpdox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 04:17:48