取出Json String中的某些元素
本文关键字:元素 Json String 取出 | 更新日期: 2023-09-27 18:07:51
我有这个Json片段(简化)
[
{
"ReferenceId": 0,
"MasterId": 1,
"BuildType": {
"DisplayName": null,
},
"Type": {
"DisplayName": null,
},
"IsActive": true,
"Name": "Product1",
"Id":1
},
{
"ReferenceId": 0,
"MasterId": 1,
"BuildType": {
"DisplayName": null,
},
"Type": {
"DisplayName": null,
},
"IsActive": false,
"Name": "Product2",
"Id":2
}
]
我想拦截这个字符串删除所有的IsActive: false,并返回一个字符串,代表一个有效的Json数组
目前我有
JArray jArrayResponse = JArray.Parse(response);
//json = jArrayResponse.Where(x => x["IsActive"].ToString() == "true").ToString();
. tostring()只是给了我"System"。
你离我不远了。诀窍是将IEnumerable<JToken>
从Where
子句传递到新的JArray
,然后将转换为字符串。此外,您可以将IsActive
JValues直接转换为bool
:
JArray jArrayResponse = JArray.Parse(response);
var json = new JArray(jArrayResponse.Where(x => (bool)x["IsActive"])).ToString();
小提琴:https://dotnetfiddle.net/lt9iWS
我会说,您可以根据JSON在应用程序中创建类似的类型。
public class BuildType
{
public string DisplayName { get; set; }
}
public class Type
{
public string DisplayName { get; set; }
}
public class RootObject
{
public int ReferenceId { get; set; }
public int MasterId { get; set; }
public BuildType BuildType { get; set; }
public Type Type { get; set; }
public bool IsActive { get; set; }
public string Name { get; set; }
public int Id { get; set; }
}
然后反序列化到那些类型
List<RootObject> ro = JsonConvert.DeserializeObject<List<RootObject>>(json);
执行像
这样的过滤器var data = ro.Where(r => r.IsActive);