(TODO)Json 请求响应转成 Go 结构体

实现要求:

  1. 区分缺失值、空值和有效值。
  2. 在可能的情况下透明地将字符串转换为数字,反之亦然。
  3. 验证字符串长度、数组长度、数字范围(32位与64位)等等。
  4. 一些字段是可选的,另一些是必需的(即如果缺少必需字段则抛出错误)。
  5. 一些字段不能为null(即如果字段为null则抛出错误。还要与(4)正确交互,即可选的非空字段可以存在且非空,或者不存在,但不能同时存在且为空)。
  6. 保留所有字段的存在/不存在和空值元数据。
  7. 允许“[]”作为空对象,因为JSON可能由PHP序列化,而PHP对空数组和空对象的区分方式与JSON不同。
  8. 允许Go结构的某些部分保持为map[string]interface{},因为JSON可能没有固定的结构。
  9. 提供良好的上下文错误消息,解释JSON中验证失败的位置,例如“account.fields[2].name必须至少5个字符长”。