我有这个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.Ienumberable",我甚至不确定Where子句是否正常工作。
答案 0 :(得分:1)
你离我不远。诀窍是将IEnumerable<JToken>
从Where
子句传递到新JArray
,然后将 转换为字符串。此外,您可以将IsActive
JValues直接转换为bool
:
JArray jArrayResponse = JArray.Parse(response);
var json = new JArray(jArrayResponse.Where(x => (bool)x["IsActive"])).ToString();
答案 1 :(得分:0)
我想说,你根据你的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);