我有一个序列化的 JsonObject,其中我必须从其子元素之一中删除除一个 json 元素或数组之外的所有元素。
{
"Index": "1",
"DoCID": "",
"Sin_id": "{xxxx}",
"Loan_LastModified": "2015-03-30T08:31:20-04:00",
"Col_1": null,
"col_2": null,
"ChildPair": [{
"Index": 1,
"Fields_35": "",
"Fields_52": "",
"Fields_1811": "PrimaryResidence",
"Fields_4000": "discount point",
"Fields_4077": null
}, {
"Index": 2,
"Fields_35": "",
"Fields_52": "",
"Fields_1811": "PrimaryResidence",
"Fields_4000": "discount point",
"Fields_4077": null
}, {
"Index": 3,
"Fields_35": "",
"Fields_52": "",
"Fields_1811": "PrimaryResidence",
"Fields_4000": "discount point",
"Fields_4077": null
},{
"Index": 4,
"Fields_35": "",
"Fields_52": "",
"Fields_1811": "PrimaryResidence",
"Fields_4000": "discount point",
"Fields_4077": null
}]
在 childPair 中,我需要删除除第一个索引之外的所有索引。请帮忙。谢谢
如果我理解正确,这样的事情应该可行。我正在删除索引大于 1 的所有 ChildPair 对象。如有必要,可以更改谓词以执行类似的任务
class RootClass
{
public string Index { get; set; }
[JsonProperty(NullValueHandling=NullValueHandling.Ignore)]
public string DoCID { get; set; }
public string Sin_id { get; set; }
public DateTime Loan_LastModified { get; set; }
public object Col_1 { get; set; }
public object col_2 { get; set; }
public List<ChildPair> ChildPair { get; set; }
}
class ChildPair
{
public int Index { get; set; }
public string Fields_35 { get; set; }
public string Fields_52 { get; set; }
public string Fields_1811 { get; set; }
public string Fields_4000 { get; set; }
public object Fields_4077 { get; set; }
}
var json = @"{
""Index"": ""1"",
""DoCID"": """",
""Sin_id"": ""{xxxx}"",
""Loan_LastModified"": ""2015-03-30T08:31:20-04:00"",
""Col_1"": null,
""col_2"": null,
""ChildPair"": [{
""Index"": 1,
""Fields_35"": """",
""Fields_52"": """",
""Fields_1811"": ""PrimaryResidence"",
""Fields_4000"": ""discount point"",
""Fields_4077"": null
}, {
""Index"": 2,
""Fields_35"": """",
""Fields_52"": """",
""Fields_1811"": ""PrimaryResidence"",
""Fields_4000"": ""discount point"",
""Fields_4077"": null
}, {
""Index"": 3,
""Fields_35"": """",
""Fields_52"": """",
""Fields_1811"": ""PrimaryResidence"",
""Fields_4000"": ""discount point"",
""Fields_4077"": null
},{
""Index"": 4,
""Fields_35"": """",
""Fields_52"": """",
""Fields_1811"": ""PrimaryResidence"",
""Fields_4000"": ""discount point"",
""Fields_4077"": null
}]}";
var res = JsonConvert.DeserializeObject<RootClass>(json);
res.ChildPair.RemoveAll(childPair => childPair.Index != 1);
如果你想跳过空属性(比如 DocID ),你可以尝试:
var output = JsonConvert.SerializeObject(rootObject,
Newtonsoft.Json.Formatting.None,
new JsonSerializerSettings {
NullValueHandling =NullValueHandling.Ignore
});
如果为空,这将从输出中删除 DocID 或 Sin_Id。
.. 并从输出中删除 DocID 和 Sin_id,无论它们是否为空:
using Newtonsoft.Json.Linq;
JObject rootObject = JObject.Parse(json);
rootObject.Property("DoCID").Remove();
rootObject.Property("Sin_id").Remove();
var output = JsonConvert.SerializeObject(rootObject);
Console.WriteLine("Output: " + output);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句