从 JSON 对象中删除特定属性 [英] Remove specific properties from JSON object
本文介绍了从 JSON 对象中删除特定属性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个 JSON:
{
"scbs_currentstatus": "",
"scbs_primaryissue": "",
"_umb_id": "Test",
"_umb_creator": "Admin",
"_umb_createdate": "0001-01-01 00:00:00",
"_umb_updatedate": "0001-01-01 00:00:00",
"_umb_doctype": "Test",
"_umb_login": "Test",
"_umb_email": "Test",
"_umb_password": {
"newPassword": "Test",
"oldPassword": null,
"reset": null,
"answer": null
},
"_umb_membergroup": {
" User": false,
"Line User": true,
"Callback User": false,
"Su User": false,
},
"umbracoMemberComments": "Test",
"umbracoMemberFailedPasswordAttempts": ""
}
我正在尝试删除所有以 "umb_" 开头的属性.这在 json.net 中可行吗?
Iam trying to remove all the properties start with "umb_" .is this possible in json.net?
并且输出将类似于:
{
"scbs_currentstatus": "",
"scbs_primaryissue": "",
"umbracoMemberComments": "Test",
"umbracoMemberFailedPasswordAttempts": ""
}
使用 remove 我可以做到,但不是一次全部.
using remove i am able to to do it however not all at a time.
result.Property("_umb_id").Remove();
请问有什么建议吗?
推荐答案
可以先解析字符串:
var temp = JArray.Parse(json);
temp.Descendants()
.OfType<JProperty>()
.Where(attr => attr.Name.StartsWith("_umb_"))
.ToList() // you should call ToList because you're about to changing the result, which is not possible if it is IEnumerable
.ForEach(attr => attr.Remove()); // removing unwanted attributes
json = temp.ToString(); // backing result to json
更新或:
result.Properties()
.Where(attr => attr.Name.StartsWith("_umb_"))
.ToList()
.ForEach(attr => attr.Remove());
更新 #2
您可以在where
子句中指定更多条件:
You can specify more conditions in where
clause:
.Where(attr => attr.Name.StartsWith("_umb_") && some_other_condition)
或
.Where(attr => attr.Name.StartsWith("_umb_") || some_other_condition)
或者任何你需要的东西.
Or whatever you need.
这篇关于从 JSON 对象中删除特定属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文