如何根据 属性 值有条件地反序列化 json
How to conditionally deserialize a json based on the property value
我有一个 json 传入,只有当 属性 值与特定字符串匹配时,我才想反序列化为 Class。
例如:
我的 json 是:
[
{
"string1": "a";
"string2": "b";
"string3": "c";
isActive: true
},
{
"string1": "d";
"string2": "e";
"string3": "f";
isActive: false
}
]
我的Class是:
public class InboundJson
{
public string string1 { get; set; }
public string string2 { get; set; }
public string string3 { get; set; }
public bool isActive { get; set; }
}
InboundJson jsonobj = JsonConvert.DeserializeObject<InboundJson>(result);
这工作正常并将传入的 json 转换为 InboundJson class 的对象。
如您所见,我有一个包含两部分的 json 数组。仅当 isActive == false.
时,我才需要反序列化到 class
知道这怎么可能吗?(除了操纵传入的 json 字符串)
知道这怎么可能吗?
This is not possible.
正如@PalleDue 所说,您可以使用 .Where()
子句
post 反序列化
List<InboundJson> jsonobj = JsonConvert.DeserializeObject<List<InboundJson>>(result);
var result = jsonobj.Where(x => x.isActive);
我有一个 json 传入,只有当 属性 值与特定字符串匹配时,我才想反序列化为 Class。 例如: 我的 json 是:
[
{
"string1": "a";
"string2": "b";
"string3": "c";
isActive: true
},
{
"string1": "d";
"string2": "e";
"string3": "f";
isActive: false
}
]
我的Class是:
public class InboundJson
{
public string string1 { get; set; }
public string string2 { get; set; }
public string string3 { get; set; }
public bool isActive { get; set; }
}
InboundJson jsonobj = JsonConvert.DeserializeObject<InboundJson>(result);
这工作正常并将传入的 json 转换为 InboundJson class 的对象。
如您所见,我有一个包含两部分的 json 数组。仅当 isActive == false.
时,我才需要反序列化到 class知道这怎么可能吗?(除了操纵传入的 json 字符串)
知道这怎么可能吗?
This is not possible.
正如@PalleDue 所说,您可以使用 .Where()
子句
List<InboundJson> jsonobj = JsonConvert.DeserializeObject<List<InboundJson>>(result);
var result = jsonobj.Where(x => x.isActive);