【问题标题】:What is the best structure JSON structure for a multi-dimensional array多维数组的最佳结构JSON结构是什么
【发布时间】:2018-06-07 06:56:05
【问题描述】:

我有以下 excel 表格。 我想以 json 结构表示该表。

什么是最好的结构?

【问题讨论】:

    标签: arrays json multidimensional-array


    【解决方案1】:

    最好的结构?这取决于。一种方法是创建一组对象(单元格)。每个单元格都包含“百分比”、“国家”、“性别”和“年份”等属性。这样您就可以轻松地对这些列进行排序。

    另一种方法是创建仅具有 X 和 Y 属性的二维单元格数组,以显示它们在表格中的位置。您必须发送一些有关表本身的信息。

    【讨论】:

      【解决方案2】:

      这是 JSON 结构。请检查并确认。

        {
          "men": [
            {
              "USA": [
                {
                  "during12months": {
                    "1997": "9.5%",
                    "2002": "16.6%",
                    "2012": "12.2%"
                  },
                  "earlier12months": {
                    "1997": "8.3%",
                    "2002": "7.8%",
                    "2012": "22.9%"
                  },
                  "never": {
                    "1997": "82.2%",
                    "2002": "75.6%",
                    "2012": "64.9%"
                  }
                }
              ],
              "Europe": [
                {
                  "during12months": {
                    "1997": "9.2%",
                    "2002": "14.4%",
                    "2012": "13.7%"
                  },
                  "earlier12months": {
                    "1997": "11.3%",
                    "2002": "8.2%",
                    "2012": "18.5%"
                  },
                  "never": {
                    "1997": "79.5%",
                    "2002": "77.4%",
                    "2012": "67.8%"
                  }
                }
              ]
            }
          ],
          "women": [
            {
              "USA": [
                {
                  "during12months": {
                    "1997": "12.1%",
                    "2002": "15.5%",
                    "2012": "13.4%"
                  },
                  "earlier12months": {
                    "1997": "7.0%",
                    "2002": "8.4%",
                    "2012": "23.6%"
                  },
                  "never": {
                    "1997": "80.9%",
                    "2002": "76.1%",
                    "2012": "63.0%"
                  }
                }
              ],
              "Europe": [
                {
                  "during12months": {
                    "1997": "12.6%",
                    "2002": "17.6%",
                    "2012": "14.9%"
                  },
                  "earlier12months": {
                    "1997": "8.8%",
                    "2002": "8.2%",
                    "2012": "16.9%"
                  },
                  "never": {
                    "1997": "78.6%",
                    "2002": "74.2%",
                    "2012": "68.2%"
                  }
                }
              ]
            }
          ],
          "total": [
            {
              "USA": [
                {
                  "during12months": {
                    "1997": "10.8%",
                    "2002": "16.0%",
                    "2012": "12.8%"
                  },
                  "earlier12months": {
                    "1997": "7.7%",
                    "2002": "8.1%",
                    "2012": "23.3%"
                  },
                  "never": {
                    "1997": "81.5%",
                    "2002": "75.9%",
                    "2012": "63.9%"
                  }
                }
              ],
              "Europe": [
                {
                  "during12months": {
                    "1997": "11.0%",
                    "2002": "16.0%",
                    "2012": "14.3%"
                  },
                  "earlier12months": {
                    "1997": "10.0%",
                    "2002": "8.2%",
                    "2012": "17.7%"
                  },
                  "never": {
                    "1997": "79.0%",
                    "2002": "75.8%",
                    "2012": "68.0%"
                  }
                }
              ]
            }
          ]
        }
      

      使用列获取查询:

      {
        "men": [
          { 
            "Europe": [
              {
      
                "earlier12months": {
                  "1997": "11.3%",
                  "2002": "8.2%",
                  "2012": "18.5%"
                }
      
              }
            ]
          }
        ],
        "women": [
          {
      
            "Europe": [
              {
      
                "earlier12months": {
                  "1997": "8.8%",
                  "2002": "8.2%",
                  "2012": "16.9%"
                }
      
              }
            ]
          }
        ],
        "total": [
          {
      
            "Europe": [
              {
      
                "earlier12months": {
                  "1997": "10.0%",
                  "2002": "8.2%",
                  "2012": "17.7%"
                }
              }
            ]
          }
        ]
      }
      

      希望对你有帮助

      谢谢 穆图

      【讨论】:

      • 谢谢,如果我想查询“欧洲”列,“早于 2 个月”。这可能吗?
      • @stephone 我已经编辑了上面的帖子。请检查并确认,如果您对我的帖子满意,请投票给我的答案
      【解决方案3】:

      对于更难的版本..大声笑!

      来源:

      {
       "rows": 
      [
      { row:"Men", 
      data:{ rows:[
      { row:"1997",data:{ 
      cols:[ 
      { col:"USA", data: { 
      cols:[ 
      { col:"during last 12", data:"9.5%"},
      { col:"earlier than 12", data:"9.5%"},
      { col:"never", data:"9.5%"} ] }}
      ,
      { col:"Europe", data: {}}] } },
      { row:"2002",data:{} },
      { row:"2002",data:{} }]  }}
      ,
      { row:"Women" }
      ,
      { row:"Total" }
      ]
      }
      

      搞笑。

      【讨论】:

        【解决方案4】:

        从另一个答案中扩展一点“它取决于”(根据谷歌的说法,这似乎是唯一一次提出这样的问题)。

        在我看来,表示多维数据的合理默认选项类似于:

        [
          { 
            "sex": "female", 
            "region": "europe", 
            "year": 2012, 
            "interval": "never", 
            "value": 12.5
          }
        ] 
          
        

        这样,每个值对象都知道它在坐标空间中的位置,并且“所有”查询同样易于实现。与以特定查询成本较低的方式组织数据相比,性能可能会更差,但将优化留到需要时。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-12-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-08-13
          相关资源
          最近更新 更多