不寻常的 JSON 结构
Unusual JSON construct
我应该阅读以下 JSON 回复:
ValueFilters:[
{field:"amount", comparitor:"GREATER", "value": 0},
{operator:"AND"},
{field:"id", comparitor:"LESS", "value": 5}]
如果它不包含 'operator' 对象那么我不会有任何问题,但是我如何构造等效的 C# 对象?
首先,您的示例 JSON 无效 JSON。要使其有效,必须为每个 属性 名称添加引号,例如 field
到 "field"
。完成后,可以解析 Json:
{
"ValueFilters": [
{
"field": "amount",
"comparitor": "GREATER",
"value": 0
},
{
"operator": "AND"
},
{
"field": "id",
"comparitor": "LESS",
"value": 5
}
]
}
通过上面那个有效的Json可以序列化成这些C#类:
public class Filters
{
public List<ValueFilter> ValueFilters { get; set; }
}
public class ValueFilter
{
[JsonPropertyName("operator")] // Handle the C# `operator` keyword.
public string Operator { get; set; }
public string field { get; set; }
public string comparitor { get; set; } // Misspell -> comparator
public int value { get; set; }
}
使用你最喜欢的解串器看起来像这样,.Net 5 System.Text.Json 显示:
var filter = JsonSerializer.Deserialize<Filters>(data);
反序列化后你有 3 ValueFilter
个项目。通过检查 Operator
属性 是否不为空,未来的代码知道如何处理数据。
Operator
field
comparitor
value
null
amount
GREATER
0
AND
null
null
0
null
id
LESS
5
我应该阅读以下 JSON 回复:
ValueFilters:[
{field:"amount", comparitor:"GREATER", "value": 0},
{operator:"AND"},
{field:"id", comparitor:"LESS", "value": 5}]
如果它不包含 'operator' 对象那么我不会有任何问题,但是我如何构造等效的 C# 对象?
首先,您的示例 JSON 无效 JSON。要使其有效,必须为每个 属性 名称添加引号,例如 field
到 "field"
。完成后,可以解析 Json:
{
"ValueFilters": [
{
"field": "amount",
"comparitor": "GREATER",
"value": 0
},
{
"operator": "AND"
},
{
"field": "id",
"comparitor": "LESS",
"value": 5
}
]
}
通过上面那个有效的Json可以序列化成这些C#类:
public class Filters
{
public List<ValueFilter> ValueFilters { get; set; }
}
public class ValueFilter
{
[JsonPropertyName("operator")] // Handle the C# `operator` keyword.
public string Operator { get; set; }
public string field { get; set; }
public string comparitor { get; set; } // Misspell -> comparator
public int value { get; set; }
}
使用你最喜欢的解串器看起来像这样,.Net 5 System.Text.Json 显示:
var filter = JsonSerializer.Deserialize<Filters>(data);
反序列化后你有 3 ValueFilter
个项目。通过检查 Operator
属性 是否不为空,未来的代码知道如何处理数据。
Operator | field | comparitor | value |
---|---|---|---|
null | amount | GREATER | 0 |
AND | null | null | 0 |
null | id | LESS | 5 |