Har*_*hit 2 c# json json.net c#-4.0
我有一个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": ""
}
Run Code Online (Sandbox Code Playgroud)
我试图删除所有属性以"umb_"开头.这可能在json.net中吗?
和输出将是:
{
"scbs_currentstatus": "",
"scbs_primaryissue": "",
"umbracoMemberComments": "Test",
"umbracoMemberFailedPasswordAttempts": ""
}
Run Code Online (Sandbox Code Playgroud)
使用删除我能够做到这一点,但不是所有的一次.
result.Property("_umb_id").Remove();
Run Code Online (Sandbox Code Playgroud)
有什么建议吗?
jav*_*iry 13
你可以先解析字符串:
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
Run Code Online (Sandbox Code Playgroud)
更新或:
result.Properties()
.Where(attr => attr.Name.StartsWith("_umb_"))
.ToList()
.ForEach(attr => attr.Remove());
Run Code Online (Sandbox Code Playgroud)
更新#2
您可以在where子句中指定更多条件:
.Where(attr => attr.Name.StartsWith("_umb_") && some_other_condition)
Run Code Online (Sandbox Code Playgroud)
要么
.Where(attr => attr.Name.StartsWith("_umb_") || some_other_condition)
Run Code Online (Sandbox Code Playgroud)
或者无论你需要什么.
| 归档时间: |
|
| 查看次数: |
14154 次 |
| 最近记录: |