[英]Delete properties from Jobject c#
Im new to Json and i I want to filter unneeded information from my JObject. 我是Json的新手,我想从JObject过滤不需要的信息。 I have a JObject as follow:
我有一个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"
}
]
}
}
and i want to scan it, and if Values[i].C3.D2 doesn't include "fish", i want to remove Values[i], so i want my new (after edit) JObject to look like this: 我想扫描它,如果Values [i] .C3.D2不包含“ fish”,我想删除Values [i],所以我希望我的新(编辑后)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",
"fish"
],
"D3": "some info"
},
"C4": "some info",
"C5": "some info"
}
]
}
}
what is the best and cleanest way for it? 最好和最干净的方法是什么?
for sample filter Odd number: 对于样本过滤器奇数:
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();
Some messy Linq will do it. 一些凌乱的Linq会做到的。 Select
Values
into a new object where D2
contains "fish" then replace Values
on the original object. 将“
Values
选择到一个新对象中,其中D2
包含“鱼”,然后替换原始对象上的“ Values
”。
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));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.