【问题标题】:How to remove empty tokens/items from a json file using C#?如何使用 C# 从 json 文件中删除空标记/项目?
【发布时间】:2023-02-23 02:17:20
【问题描述】:

如何删除 json 文件中所有值为 'N/A''-''' 的键,例如:

{
    "name": {
        "first": "Robert",
        "middle": "",
        "last": "Smith"
    },
    "age": 25,
    "DOB": "-",
    "hobbies": [
        "running",
        "coding",
        "-"
    ],
    "education": {
        "highschool": "N/A",
        "college": "Yale"
    }
}

在这种情况下,需要删除middlehighschool

我试过用这个:

var json = JObject.Parse(jsonString);

json.SelectTokens("@==''").FirstOrDefault().Remove();

【问题讨论】:

  • Soooo,你为什么放弃?

标签: c# json


【解决方案1】:

你可以试试这段代码:

string jsonString = @"
    {
        ""name"": {
            ""first"": ""Robert"",
            ""middle"": """",
            ""last"": ""Smith""
        },
        ""age"": 25,
        ""DOB"": ""-"",
        ""hobbies"": [
            ""running"",
            ""coding"",
            ""-""
        ],
        ""education"": {
            ""highschool"": ""N/A"",
            ""college"": ""Yale""
        }
    }";
  • 将 JSON 字符串解析为 JObject:

    JObject json = JObject.Parse(jsonString);
  • 获取值为“N/A”、“-”或空字符串的所有属性:

           var propertiesToRemove = json.Descendants()
                                    .OfType<JProperty>()
                                    .Where(p => p.Value.Type == JTokenType.String && 
                                      (string)p.Value == "N/A" || (string)p.Value == "-" || (string)p.Value == "").ToList();
    
  • 删除选定的属性:

    foreach(propertiesToRemove 中的 var 属性)
             {
                 财产。删除();
             }

【讨论】:

  • 给我这个错误无法将对象转换为字符串。在这个p.Value.Type == JTokenType.String
  • 我在这部分(string)p.Value == "N/A" || (string)p.Value == "-" || (string)p.Value == "" 中添加 ( ) 解决了它,现在可以完美运行
猜你喜欢
  • 1970-01-01
  • 2020-09-05
  • 2014-12-17
  • 2016-12-11
  • 2021-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-29
相关资源
最近更新 更多