【发布时间】:2021-01-21 10:05:31
【问题描述】:
有一个我从中得到 json 结果的 typescript 部分,需要在 c# 中解析结果以获取使用它的对象,但是因为我们在这里:
- 多类型字段
- 递归
越来越难以理解反序列化器的外观, 我知道我需要将 JsonConverter 用于多类型字段,但是如何处理沿多类型字段的递归?
这是制作 json 的打字稿代码:
export interface FilterDescriptor {
field ? : string | Function;
operator: string | Function;
value ? : any;
ignoreCase ? : boolean;
}
export interface CompositeFilterDescriptor {
logic: 'or' | 'and';
filters: Array < FilterDescriptor | CompositeFilterDescriptor > ;
}
export declare
const isCompositeFilterDescriptor: (source: FilterDescriptor | CompositeFilterDescriptor) => source is CompositeFilterDescriptor;
json 的一个例子: 递归
{
"logic": "and",
"filters": [
{
"field": "type.group",
"logic": "and",
"filters": [
{
"field": "type.group",
"operator": "neq",
"value": 2
},
{
"field": "type.group",
"operator": "neq",
"value": 5
}
]
}
]}
没有递归:
{
"logic": "and",
"filters": [
{
"field": "type.group",
"operator": "eq",
"value": 2
}
]}
这个 json 是使用来自 Telerik "CompositeFilterDescriptor" 的 Kendo Ui for Angular 生成的
谢谢。
【问题讨论】:
-
值字段是
number吗? -
它也可以是一个字符串,甚至是一个像“2,4,5”这样的数组
-
嗯.. 它更复杂。
-
sidequestion:这是您的递归示例,最大递归数还是更多?
-
理论上可以有好几层,我的只有2层。
标签: c# json typescript telerik deserialization