Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正确使用JSON进行简单的餐厅菜单描述_Javascript_Json_Validation_Encoding - Fatal编程技术网

Javascript 正确使用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"} ] }} 我已经用验证了脚本,但我还是想再验证一点,因为我是新手 关

我想知道我制作的这个JSON脚本示例是否格式良好,以及这样放置信息是否有意义

{"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响应并尝试访问服务器未返回的属性。钥匙也不能有空格。这就是为什么垃圾食品是垃圾食品。