构建此 JSON 数据的更好方法?

Better way to structure this JSON data?

所以我正在使用 Firebase 和 JavaScript 制作 2D 游戏,这是保存文件的一部分。他们使用 JSON 来存储数据。

{
    "player" : {
    "github:123123" : {
      "email" : "tester@gmail.com",
      "inventory" : {
        "slot_1" : {
          "item_id" : 0,
          "item_qty" : 0
        },
        "slot_10" : {
          "item_id" : 0,
          "item_qty" : 0
        },
        "slot_11" : {
          "item_id" : 0,
          "item_qty" : 0
        },
        "slot_12" : {
          "item_id" : 0,
          "item_qty" : 0
        },
        "slot_13" : {
          "item_id" : 0,
          "item_qty" : 0
        },
        "slot_14" : {
          "item_id" : 0,
          "item_qty" : 0
        },
        "slot_15" : {
          "item_id" : 0,
          "item_qty" : 0
        },
        "slot_16" : {
          "item_id" : 0,
          "item_qty" : 0
        },
        "slot_17" : {
          "item_id" : 0,
          "item_qty" : 0
        },
        "slot_18" : {
          "item_id" : 0,
          "item_qty" : 0
        },
        "slot_19" : {
          "item_id" : 0,
          "item_qty" : 0
        },
        "slot_2" : {
          "item_id" : 0,
          "item_qty" : 0
        },
        "slot_20" : {
          "item_id" : 0,
          "item_qty" : 0
        },
        "slot_3" : {
          "item_id" : 0,
          "item_qty" : 0
        },
        "slot_4" : {
          "item_id" : 0,
          "item_qty" : 0
        },
        "slot_5" : {
          "item_id" : 0,
          "item_qty" : 0
        },
        "slot_6" : {
          "item_id" : 0,
          "item_qty" : 0
        },
        "slot_7" : {
          "item_id" : 0,
          "item_qty" : 0
        },
        "slot_8" : {
          "item_id" : 0,
          "item_qty" : 0
        },
        "slot_9" : {
          "item_id" : 0,
          "item_qty" : 0
        }
      },
      "lowercase" : "test",
      "map" : 1,
      "member_level" : 2,
      "signed_up" : 1437261263536,
      "uid" : "github:616320",
      "username" : "Test",
      "version" : "1.0.0",
      "x" : 50,
      "y" : 20
    }
  }
}

如您所见,问题在于 inventory 的结构。有没有更好的方法来构建它更好更整洁?我已经阅读了 Firebase 上的 Structuring Data 文档,但非常感谢您的意见。

这不仅适用于库存,还适用于银行以及游戏中需要大量物品插槽的任何地方。

谢谢。

嗯。您的版本应该可以工作,但我建议采用以下结构:

{
    "email" : "tester@gmail.com",
    "inventory" : [{
        "id": 0,
        "amount": 0
    },{
        "id": 0,
        "amount": 0
    },{
        "id": 0,
        "amount": 0
    },{
        "id": 0,
        "amount": 0
    }],
    "lowercase" : "test",
    "map" : 1,
    "memberLevel" : 2,
    "signedUp" : 1437261263536,
    "uid" : "github:616320",
    "username" : "Test",
    "version" : "1.0.0",
    "x" : 50,
    "y" : 20
}

推理:

  1. 在 JS 中,驼峰式大小写是大多数项目的默认设置,因此我也会在这里使用它。
  2. 您不需要玩家属性和 github:* 属性,如果它们是唯一的。将 JSON 保存到玩家的数据库中,并为每个玩家保留一个 JSON。
  3. 您的库存数据结构似乎更适合数组,因为您基本上使用了每个插槽(如果没有,它就是空的)并希望通过插槽 ID 访问它。
  4. 如果您描述的子对象在清单数组中,则无需调用每个 属性 项目,因为这是显而易见的。