在来自服务器的JSON响应中,同一属性是否可以基于另一个属性的值具有不同的类型,或者这是应该避免的反模式?
例:
[
{
"value": 1.2,
"valueType": "Numeric"
},
{
"value": false,
"valueType": "Boolean"
}
]
这样做的方法通常是将值编码为字符串。然后,无论谁收到该值,都可以根据valueType
进行相应的解析。如果提前知道类型会更好,但有时你必须处理这种情况。
[
{
"value": "1.2",
"valueType": "Numeric"
},
{
"value": "false",
"valueType": "Boolean"
}
]
我不确定是否希望从单个JSON属性返回多个不同的数据类型。如果您觉得这是必要的,那么最动态的属性将是一个String,在您的中间层逻辑中有一系列try / catches来解析您希望的结果。否则,我会尝试将您尝试捕获的字段分解为多个有意义的字段,以便更准确地捕获您正在查找的数据。