所以我正在使用 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
}
推理:
- 在 JS 中,大多数项目默认使用驼峰命名法,因此我也会在这里使用它。
- 如果玩家属性和 github:* 属性是唯一的,则不需要它们。将 JSON 安全保存到玩家数据库中,并为每个玩家保留一个 JSON。
- 库存的数据结构似乎更适合作为数组,因为您基本上使用每个插槽(如果没有,则为空)并希望通过插槽 ID 访问它。
- 如果您描述的子对象位于库存数组中,则无需调用每个属性项,因为这是显而易见的。
关于javascript - 构建此 JSON 数据的更好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31496527/