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

标签 javascript json firebase

所以我正在使用 Firebase 制作 2D 游戏与 JavaScript 一起,这是保存的文件的一部分。他们使用 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
    }
  }
}

如您所见,问题在于库存的结构。有没有更好的结构方式,使其更漂亮、更整洁?我已阅读Structuring Data Firebase 上的文档,但我非常感谢您的意见。

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

谢谢。

最佳答案

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

{
    "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. 如果您描述的子对象位于库存数组中,则无需调用每个属性项,因为这是显而易见的。

关于javascript - 构建此 JSON 数据的更好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31496527/

相关文章:

ios - Firebase 分析 iOS

android - 同步获取 Firebase 用户 token

swift - Firebase 和 Facebook 身份验证

JavaScript 比较 2 个数组(某种意义上)

javascript - window.open 无法按预期工作,需要一些建议

javascript - Bootstrap 4 工具提示仅在指定 HTML 属性时显示 -

xml - 为什么在 Google API 文档中通常建议使用 JSON 而不是 XML?

java - 如何正确转义JSON中的反斜杠(使用GSON进行反序列化)

javascript - mongodb按范围查询分页与另一个排序字段

c# 如何将 Json 数据检索到数组中