【问题标题】:How to conditionally deserialize a json based on the property value如何根据属性值有条件地反序列化 json
【发布时间】:2022-01-17 14:54:07
【问题描述】:

我有一个 json 传入,我想仅在属性值与特定字符串匹配时反序列化为 Class。 例如: 我的 json 是:

[
{
"string1": "a";
"string2": "b";
"string3": "c";
isActive: true
},
{
"string1": "d";
"string2": "e";
"string3": "f";
isActive: false
}
]

我的班级是:

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 类的对象。

如您所见,我有一个包含两部分的 json 数组。仅当 isActive == false 时,我才需要反序列化到类中。

知道这是怎么可能的吗?(除了操作传入的 json 字符串)

【问题讨论】:

标签: c# json json.net deserialization json-deserialization


【解决方案1】:

知道这怎么可能吗?

这是不可能

正如@PalleDue 所说,您可以使用.Where() 子句在反序列化后进行

List<InboundJson> jsonobj = JsonConvert.DeserializeObject<List<InboundJson>>(result);

var result = jsonobj.Where(x => x.isActive);

【讨论】:

    猜你喜欢
    • 2016-03-23
    • 1970-01-01
    • 2021-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-08
    • 1970-01-01
    相关资源
    最近更新 更多