Javascript 正确使用JSON进行简单的餐厅菜单描述
我想知道我制作的这个JSON脚本示例是否格式良好,以及这样放置信息是否有意义Javascript 正确使用JSON进行简单的餐厅菜单描述,javascript,json,validation,encoding,Javascript,Json,Validation,Encoding,我想知道我制作的这个JSON脚本示例是否格式良好,以及这样放置信息是否有意义 {"menu": { "drinks": [ {"coke": "20"}, {"pepsi": "20"}, {"water": "20"} ], "junk-food": [ {"hamburger": "40"}, {"fries": "20"}, {"pizza": "20"} ] }} 我已经用验证了脚本,但我还是想再验证一点,因为我是新手 关
{"menu": {
"drinks": [
{"coke": "20"},
{"pepsi": "20"},
{"water": "20"}
],
"junk-food": [
{"hamburger": "40"},
{"fries": "20"},
{"pizza": "20"}
]
}}
我已经用验证了脚本,但我还是想再验证一点,因为我是新手
关于脚本使用的一些上下文,我将用Python解析脚本
它旨在组织GUI的元素,这些元素或多或少类似于:
在第二个窗口中,将出现一个类似于第一个窗口的列表框,其中包含相应的项目和相应的价格
- 它正确吗
- 这种结构有意义吗
- JSON是正确的。这个结构没有太多的语义意义。我更改了结构,以便在添加属性时,它具有更多的含义,并且更易于管理
{"menu": {
"items": [
{
"name":"coke",
"qty": 20,
"category":"drinks",
"sizes":["small","large"]
},
{
"name":"pepsi",
"qty": 20,
"category":"drinks",
"sizes":["small","large"]
},
{
"name":"water",
"qty": 20,
"category":"drinks",
"sizes":["small","large"]
},
{
"name":"hamburger",
"qty": 40,
"category":"junk food",
"sizes":["small","large"]
},
{
"name":"fries",
"qty": 20,
"category":"junk food",
"sizes":["small","large"]
},
{
"name":"pizza",
"qty": 20,
"category":"junk food",
"sizes":["small","large"]
}
]
}}
为了节省空间你也可以这样做
{"menu": {
"items": [
{
"name":"coke",
"qty": 20,
"category":0,
"sizes":["small","large"]
},
{
"name":"pepsi",
"qty": 20,
"category":0,
"sizes":["small","large"]
},
{
"name":"water",
"qty": 20,
"category":0,
"sizes":["small","large"]
},
{
"name":"hamburger",
"qty": 40,
"category":1,
"sizes":["small","large"]
},
{
"name":"fries",
"qty": 20,
"category":1,
"sizes":["small","large"]
},
{
"name":"pizza",
"qty": 20,
"category":1,
"sizes":["small","large"]
}
],
"categories":[
"drinks",
"junk food"
]
}}
我会把所有的项目放在同一个数组中,带有一个“category”属性——或者更好的是,一个category属性数组。那样的话,
薯条可以是垃圾食品
,也可以是配菜
和开胃菜
。你会如何建模这些对象?首先做这个。@DerekBeattie我真的不知道怎么做,这几乎是我第一次使用JSON。不过我会试试的。谢谢@艾凡:我不太明白你的意思。如果我把每个项目都放在一个数组中,我如何识别该项目属于哪一类?我会给每个项目一个ID,并使其更清楚价格是多少。比如“coke”:{id:1,price:20}
。另外请注意,我删除了”
,因为它是一个数字,如果没有”
,它在语义上会使用得更好。嗯,有趣的是,它看起来确实更好!顺便说一句,这个数字不是数量,也不是说它有多大区别+1.感谢您的编辑,我真的不需要节省太多空间,因为这些信息不会被传输,它只会在应用程序启动时被python读取一次,因此不需要进行太多优化。这取决于哪种信息更重要。如果优先级是查找一个类别中的所有项目,那么这种结构对于该任务来说可能有点不好。还有一个问题。我认为这可能有问题,假设我有两种百事可乐,一种小的一种大的,你会建议我如何指出它们应该一起呈现?一个接一个?@tereško我同意。您需要对数据进行传递,以获取同一类别中的所有项目。我之所以这样做是因为我试图避免使用数据作为密钥。这样,您就不太可能遍历json响应并尝试访问服务器未返回的属性。钥匙也不能有空格。这就是为什么垃圾食品是垃圾食品。