使用和不使用高级功能格式化用户JSON

时间:2017-01-18 09:41:46

标签: json api

我正在尝试找出格式化API返回的用户JSON的最佳方法。这是基本对象:

user {
  name: 'john',
  email: 'john@example.com',
  signed_up: '12-12-2012',
}

如何将用户的高级计划功能添加到JSON?用户可以是Free,也可以是ProBusiness。问题是,ProBusiness都包含一个对象,其中包含有关该计划的更多信息,而Free计划则不包含任何内容。

是否可以为计划返回一个字符串(如果它是Free)和一个对象,以防它被支付?或者我应该避免使用不同的返回类型?

2 个答案:

答案 0 :(得分:1)

您可以格式化您的回复,如下所示。如果溢价为ProBusiness,则furtherInfo对象将包含更多信息,否则如果Free,则response不应具有进一步的信息。

response: {
  user: {
    name: 'john',
    email: 'john@example.com',
    signed_up: '12-12-2012',
    premium: 'Pro'
  },
  furtherInfo: {
    attribute1: 'value1',
    ....
    attributeN: 'valueN'
  }
}

response: {
  user: {
    name: 'john',
    email: 'john@example.com',
    signed_up: '12-12-2012',
    premium: 'Free'
  }
}

答案 1 :(得分:1)

我最终采用以下格式:

免费用户:

response: {
  user: {
    name: 'john',
    email: 'john@example.com',
    signed_up: '12-12-2012',
    plan: {
      name: 'Free',
      billing_period: null
      price: null
    }
  },
}

高级用户:

response: {
  user: {
    name: 'john',
    email: 'john@example.com',
    signed_up: '12-12-2012',
    plan: {
      name: 'Premium',
      billing_period: 12
      price: 299
    }
  },
}