JSON响应中的同一属性可以是数字/布尔值/字符串吗?

时间:2018-08-31 17:00:07

标签: json

在来自服务器的JSON响应中,同一属性是否可以基于另一个属性的值而具有不同的类型,还是应该避免使用这种反模式?

示例:

[
  {
    "value": 1.2,
    "valueType": "Numeric"
  },
  {
    "value": false,
    "valueType": "Boolean"
  }
]

2 个答案:

答案 0 :(得分:2)

我不确定希望从单个JSON属性返回多个不同数据类型的用例。如果您觉得有必要,那么最动态的属性将是一个String,该字符串在您的中间层逻辑中具有一系列try / catches来解析您希望的结果。否则,我会尝试将也许要捕获的字段分成多个有意义的字段,以更准确地捕获您要查找的数据。

答案 1 :(得分:2)

执行此操作的方法通常是将值编码为字符串。然后,接收到该值的任何人都可以根据valueType对其进行解析。最好事先知道类型,但有时您必须处理这种情况。

[
  {
    "value": "1.2",
    "valueType": "Numeric"
  },
  {
    "value": "false",
    "valueType": "Boolean"
  }
]