1

階層をJSONに保存する方法は?

私は次の階層を持っています:

Hierarhy:

 1:Publish, "Long description of Publish service", is_default
     7: 7 days,  150
    14:14 days,  600, +200%
    30:1 month, 1350, +300%
 2:Premium, "Long description..."
    14:14 days,  150
    30:1 month,  600
    60:2 month,  1500
 3:SuperPremium, "Long description...", disabled
    30:1 month,  150
    60:2 month,  600
    90:3 month,  1500, disabled

どこ:

  • 「公開、プレミアム、スーパープレミアム」-はサービスです。1,2,3-サービスID。

  • 「7日、14日、28日」-サービスパラメータです。7,14,28-パラメータID。

  • パラメータはサービスによって異なります。

次の画像はそれを示しています。

ここに画像の説明を入力してください

JSON形式の軽量で使用可能な構造が必要です。

この階層をJSONで表すための最良の方法は何ですか?

4

6 に答える 6

3

私は次のようなことをします:

[
   {
      "Service":"Publish",
      "Desc":"Long description of Publish serive",
      "Params":[
         {
            "Days":"7",
            "Desc":"7 Days",
            "Cost":150
         },
         {
            "Days":"14",
            "Desc":"14 Days",
            "Cost":600,
            "Extra":"+200%"
         },{...}
      ]
   }, {...}, {...}
]
于 2012-07-27T05:27:44.660 に答える
2

JSON can be written exactly as you would any other JavaScript object. An example taking your sample case is

[
    {
        "publish":{
             "id":1,
             "description": "Some description",
             "text": "Publish",
             "enabled": true,
             "params": [
                 {
                    "days": 7,
                    "description": "7 days",
                    "cost": 300
                 },.....//and so on
             ]
         }
    }
]
于 2012-07-27T05:33:05.140 に答える
2
{
    "publish": {
        "id": 1,
        "desc": "Long description of Publish service",
        "state": 1,
        "params": [
            {
                "key": 7,
                "val": 100,
                "desc": "7 days",
                "pct": 0,
                "enabled": true
            },
            {
                "key": 14,
                "val": 600,
                "desc": "14 days",
                "pct": 200,
                "enabled": true
            },
            {
                "key": 30,
                "val": 1350,
                "desc": "30 days",
                "pct": 300,
                "enabled": true
            }
        ]
    },
    "premimum": {
        ...
    },
    "superPremimum": {
        ...
    }
}

where: state is 1: selected, 0: not-selected, -1: disabled

于 2012-07-27T05:33:34.270 に答える
2

私のアプローチ:

{
        '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%を個人的に使用してそれらを表現するのが好きです。また、日や月などの時間の単位で複数化の問題を処理する必要があります。

于 2012-07-27T05:36:22.173 に答える
1
[{
 prop1 : value
 prop2 : {
     level2Prop : value1
     . 
     .         
  }
},
{
 ...
}]
于 2012-07-27T05:24:48.933 に答える
0

アイデアの1つは次のとおりです。

       // default values
       {
        service:'publish', 
        period:7
       }

       // data
       {
        service:{  
                 'publish':{title:'Publish'}, 
                 'premium': {title:'Premium',    description: '...'}, 
                 'superpremium':{title:'SuperPremium', description: '...', disabled}
               },
        period:{ 
                'publish': {
                          7:{title: '7 days'}, 
                         14:{title:'14 days'}, 
                         28:{title:'28 days'}},
                'premium': {
                         14:{title:'14 days'}, 
                         28:{title:'28 days'}, 
                         36:{title:'36 days'}},
                'superpremium': {
                         28:{title:'28 days'}, 
                         60:{title:'60 days'}, 
                         90:{title:'90 days'}}
               }
       }
于 2012-08-01T11:59:16.200 に答える