Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.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# 从Jobject c中删除属性_C#_Json - Fatal编程技术网

C# 从Jobject c中删除属性

C# 从Jobject c中删除属性,c#,json,C#,Json,我是Json新手,我想从我的JObject中过滤不需要的信息。 我的工作项目如下: { "A": "sr", "B": { "B1": "some data", "B2": "some data, "Values": [ { "C1": "some info", "C2": someinfo", "C3": { "D1": "some info

我是Json新手,我想从我的JObject中过滤不需要的信息。 我的工作项目如下:

 {
    "A": "sr",
    "B": {
      "B1": "some data",
      "B2": "some data,
      "Values": [
        {
          "C1": "some info",
          "C2": someinfo",
          "C3": {
            "D1": "some info",
            "D2": [
              "cat",
              "dog",
              "fish"
            ],
            "D3": "some info"
          },
          "C4": "some info",
          "C5": "some info"
        },
        {
          "C1": "some info",
          "C2": someinfo",
          "C3": {
            "D1": "some info",
            "D2": [
              "cat",
              "dog"
            ],
            "D3": "some info"
          },
          "C4": "some info",
          "C5": "some info"
        },
           {
          "C1": "some info",
          "C2": someinfo",
          "C3": {
            "D1": "some info",
            "D2": [
              "cat",
              "dog"
            ],
            "D3": "some info"
          },
          "C4": "some info",
          "C5": "some info"
        }
      ]
    }
  }
我想扫描它,如果值[i].C3.D2不包括fish,我想删除值[i],所以我希望编辑后的新作业对象如下所示:

       {
    "A": "sr",
    "B": {
      "B1": "some data",
      "B2": "some data,
      "Values": [
        {
          "C1": "some info",
          "C2": someinfo",
          "C3": {
            "D1": "some info",
            "D2": [
              "cat",
              "dog",
              "fish"
            ],
            "D3": "some info"
          },
          "C4": "some info",
          "C5": "some info"
        },
           {
          "C1": "some info",
          "C2": someinfo",
          "C3": {
            "D1": "some info",
            "D2": [
              "cat",
              "fish"
            ],
            "D3": "some info"
          },
          "C4": "some info",
          "C5": "some info"
        }
      ]
    }
  }

什么是最好和最干净的方法?

对于样本过滤器奇数:

public class MyClass{
    public string A{get; set;}
    public List<int> B{get; set;}
 }

string js= "{"A" : "1","B" : [1,2,3,4,5,6]}";

MyClass obj  = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<MyClass>(js);

obj.B= obj.B.Where(t => t % 2 == 0).ToList();

一些脏兮兮的林克会做的。在D2包含鱼的新对象中选择值,然后替换原始对象上的值

string jsondata = @"{ ""A"":""sr"", ""B"": { ""B1"":""some data"", ""B2"":""some data"", ""Values"": [{ ""C1"":""some info"", ""C2"":""someinfo"", ""C3"": { ""D1"":""some info"", ""D2"": [ ""cat"", ""dog"", ""fish"" ], ""D3"":""some info"" }, ""C4"":""some info"", ""C5"":""some info"" }, { ""C1"":""some info"", ""C2"":""someinfo"", ""C3"": { ""D1"":""some info"", ""D2"": [ ""cat"", ""dog"" ], ""D3"":""some info"" }, ""C4"":""some info"", ""C5"":""some info"" }, { ""C1"":""some info"", ""C2"": ""someinfo"", ""C3"": { ""D1"":""some info"", ""D2"": [ ""cat"", ""dog"" ], ""D3"":""some info"" }, ""C4"":""some info"", ""C5"":""some info"" } ] } } ";
JObject jobj = JObject.Parse(jsondata);
var filteredValues = jobj["B"]["Values"].Select(j => j).Where(j => j["C3"]["D2"].ToArray().Contains("fish")); 
jobj["B"]["Values"] = JToken.FromObject(filteredValues);

Console.WriteLine(JsonConvert.SerializeObject(jobj));

将JSON转换为对象列表,使用linq从对象过滤并重新生成JSON。如何?它是一个objectJObject。