C# JSON.NET 删除带有","的字符串



最后一个问题:

我的文件包含了这些东西:

{
      "type": "06A, 06B, 06C, 06D, 06E",
      "qt": "6-8-",
      "id": "06A, 06B, 06C, 06D, 06E6-8-"
    }

现在我要清理我的文件,并删除所有类型包含逗号或","的对象。

我已经读过这个:c#删除json子节点使用newtonsoft,但没有可能删除对象,如果它包含一个特殊的字符…

我真的很感激任何帮助!

现在我有:

public void filter()
    {
        string sourcePath = @Settings.Default.folder;
        string pathToSourceFile = Path.Combine(sourcePath, "file.json");
        string list = File.ReadAllText(pathToSourceFile);
        Temp temporaray = JsonConvert.DeserializeObject<Temp>(list);
    }

您可以使用LINQ to JSON来解析JSON并删除包含符合您的标准的"type"属性的对象,而不是反序列化为临时Temp类型:

var root = JToken.Parse(json);
if (root is JContainer)
{
    // If the root token is an array or object (not a primitive)
    var query = from obj in ((JContainer)root).Descendants().OfType<JObject>()  // Iterate through all JSON objects 
                let type = obj["type"] as JValue                                // get the value of the property "type"
                where type != null && type.Type == JTokenType.String 
                    && ((string)type).Contains(",")                             // If the value is a string that contains a comma
                select obj;                                                     // Select the object
    foreach (var obj in query.ToList())
    {
        // Remove the selected object
        obj.Remove();
    }
}

样本小提琴。

那么要序列化到一个名为fileName的文件,可以序列化root对象,如将JSON序列化到一个文件:

using (var file = File.CreateText(fileName))
{
    var serializer = JsonSerializer.CreateDefault(new JsonSerializerSettings { Formatting = Formatting.Indented });
    serializer.Serialize(file, root);
}

相关内容

  • 没有找到相关文章

最新更新