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

问题描述 投票:1回答:2

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

例:

[
  {
    "value": 1.2,
    "valueType": "Numeric"
  },
  {
    "value": false,
    "valueType": "Boolean"
  }
]
json
2个回答
2
投票

这样做的方法通常是将值编码为字符串。然后,无论谁收到该值,都可以根据valueType进行相应的解析。如果提前知道类型会更好,但有时你必须处理这种情况。

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

2
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.