c# - 使用接口反序列化松散类型的 json
问题描述
我有一个相当松散的 .json 文件,我想反序列化它。JSON 基本上是一个控制决策的条件列表。
{
"or" : [
"and" : [
{
"bool" : {
"expected" : true,
"actual" : false
}
},
{
"bool" : {
"expected" : false,
"actual" : false
}
}
]
.
.
.
这些类看起来像这样:
public class BoolCondition : ICondition
{
private readonly bool _expected;
private readonly bool _actual;
public BoolCondition(bool expected, bool actual)
{
_expected = expected;
_actual = actual;
}
public bool Eval()
{
return _expected.Equals(_actual);
}
}
public class AndCondition : ICondition
{
public ICondition[] Conditions { get; set; }
public AndCondition()
{
}
public bool Eval()
{
return Conditions.All(c => c.Eval());
}
}
public class OrCondition : ICondition
{
public ICondition[] Conditions { get; set; }
public bool Eval()
{
return Conditions.Any(c => c.Eval());
}
}
有一个叫ICondition的接口,“or”、“and”、“bool”等条件都实现了这个接口。当然,这棵树中可以有任何结构。
有什么想法可以反序列化这个 JSON 吗?
解决方案
推荐阅读
- docker - Traefik 2 - 尝试将我的第一个容器配置为使用 traefik
- c# - 重新加载时重置分数
- javascript - JavaScript p5.js 游戏中的敌人检测和炮塔动画/控制
- android - 使用浮动或分数样式资源的自定义视图崩溃
- c++ - 与串行版本相比,使用 openMP 的插入排序的并行化给出了非常尖锐的结果
- java - org.apache.kafka.common.errors.TimeoutException:错误
- r - R中coxph的两个不同结果,使用相同的停止和开始时间,为什么?
- javascript - 如何将 JavaScript 局部变量发送到全局数组?
- spring-boot - Spring JPA - 在多个事务中执行更新时事务不起作用
- javascript - 我似乎无法将值传递给 javascript 函数