如何在JSON中存储hierarhy?
我有以下层次结构:
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
其中:
“Publish,Premium,SuperPremium” - 是服务。 1,2,3 - 服务ID。
“7天,14天,28天” - 是服务参数。 7,14,28 - 参数id。
参数取决于服务。
下图说明了它:
需要JSON格式的精简和可用结构。
在JSON中表示此hierarhy的最佳方法是什么?
答案 0 :(得分: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%"
},{...}
]
}, {...}, {...}
]
答案 1 :(得分:2)
JSON可以像编写任何其他JavaScript对象一样编写。以您的示例为例的示例是
[
{
"publish":{
"id":1,
"description": "Some description",
"text": "Publish",
"enabled": true,
"params": [
{
"days": 7,
"description": "7 days",
"cost": 300
},.....//and so on
]
}
}
]
答案 2 :(得分: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": {
...
}
}
其中:state
为1:已选中,0:未选中,-1:已禁用
答案 3 :(得分: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%亲自代表他们。您还必须使用时间单位(例如天和月)来处理复数问题。
答案 4 :(得分:1)
[{
prop1 : value
prop2 : {
level2Prop : value1
.
.
}
},
{
...
}]
答案 5 :(得分:0)
其中一个想法是:
// 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'}}
}
}