私のアプローチ:
{
'data' : [
{
'ServiceId' : 1
'Name': 'Publish',
'LongName': 'Long description of Publish service',
'OptionalFlag': 'default',
'Parameters': [
{ 'Id': 7, 'Amount': 7, 'Unit': 'days', 'Cost': 150, 'Surcharge': 0.0 },
{ 'Id': 14, 'Amount': 14, 'Unit': 'days', 'Cost': 600, 'Surcharge': 2.0 },
{ 'Id': 30, 'Amount': 1, 'Unit': 'month', 'Cost': 1350, 'Surcharge': 3.0 },
]
},
{
'ServiceId' : 2
'Name': 'Premium',
'LongName': 'Long description of Publish service',
'OptionalFlag': 'disabled',
'Parameters': [
{ 'Id': 14, 'Amount': 14, 'Unit': 'days', 'Cost': 150, 'Surcharge': 0.0 },
{ 'Id': 30, 'Amount': 1, 'Unit': 'month', 'Cost': 600, 'Surcharge': 0.0 },
{ 'Id': 60, 'Amount': 2, 'Unit': 'month', 'Cost': 1500, 'Surcharge': 0.0 },
]
},
{
'ServiceId' : 3
'Name': 'SuperPremium',
'LongName': 'Long description of Publish service',
'OptionalFlag': 'disabled',
'Parameters': [
{ 'Id': 30, 'Amount': 1, 'Unit': 'month', 'Cost': 150, 'Surcharge': 0.0 },
{ 'Id': 60, 'Amount': 2, 'Unit': 'month', 'Cost': 600, 'Surcharge': 0.0 },
{ 'Id': 90, 'Amount': 3, 'Unit': 'month', 'Cost': 1500, 'Surcharge': 0.0 },
]
}
]
}
編集:(フォーマットの詳細)
コードで処理する必要のあるフォーマットの詳細がいくつかあり、それを回避できる構造はありません。追加料金のパーセンテージ値を保存する方法など、合計を計算するために数学を適用します。私は1.0=100%を個人的に使用してそれらを表現するのが好きです。また、日や月などの時間の単位で複数化の問題を処理する必要があります。