我有以下 JSON 文件
JSON 表示一些角色,在角色中有一些类别,例如MOD
和ADMINISTRATOR
在这些类别中是将分配给用户的角色,这些角色包含角色的名称和颜色。
如果有人有更好的方式来构建 JSON,你能告诉我。谢谢
{
"roles":{
"MOD":[
["Mod","ORANGE"],
["Staff","GRAY"]
],
"ADMINISTRATOR":[
["ADMIN","RED"],
["CO-ADMIN","BLUE"],
["MANAGER","SKYBLUE"]
]
}
}
我想要的是能够访问里面的每个对象roles
,但我不知道该怎么做。我试过这个。
const ROLES = require("roles.js")
const roles = ROLES.roles
for(rol of roles){
console.log(rol)
}
但它告诉我UnhandledPromiseRejectionWarning: TypeError: roles is not iterable
,我想不出我能做什么。
正如我所说,我想获取MOD
y的数组,ADMINISTRATOR
但我想动态地进行,即获取角色内的所有数组,因为将来我可以添加更多。
作为获取数组(MOD、ADMINISTRATOR 等)时的额外信息,我将不得不访问这些数组中的元素
正如我在您的评论中看到的,您正在寻找动态输入每个角色对象并打印其数组的内容。我不知道它是否是最优雅的,但它是我想到的:
您当前的 JSON 有两个可迭代元素(数组),它们
MOD
位于ADMINISTRATOR
JSON object 内部roles
。您可以通过直接访问它们来遍历它们,例如:
版
可以更好地代表您在问题更新中表达的内容的结构如下。
您在代码中看到的 JSON 被简要定义为一组
roles
,它们都具有一个类别 (category
) 和一组用户 (users
),而用户组又具有一个属性name
和color
. 最重要的是,此 JSON 将代表您的应用程序中以数据模型表示的逻辑。通常,此数据模型与其他工具耦合并协同工作,有时在不同的上下文中,例如数据库、API、Web 服务、移动应用程序、网页等。数据模型是相同的,然后您可以在需要它的所有部分中表达或扩展它。例如,此 JSON 可映射到数据库表、类型实体或 POJO 或更广泛应用程序中的任何其他类型。
基本的事情是您尊重 JSON 中定义的规则,这将代表您的应用程序在任何上下文中工作的逻辑方式,因此它是灵活的并且始终可以使用相同的代码读取。
让我们假设添加了另一个角色,JSON 将被修改,但不是我们用来读取它的代码:
访问数组中的特定元素
如果要访问数组中的特定元素,可以使用索引,请记住数组从零开始索引,因此第一个元素位于 index 处
0
,第二个元素位于 index 处1
,依此类推。您可以创建对元素的引用:
或者直接访问,根据json结构浏览并注明索引。例如:
让我们看一个工作示例:
你必须记住,当你遍历一个数组时,你不能使用点命名法来解析一个值,你只能用对象来做,这就是为什么在 for 循环中你有它会给你错误
TypeError: roles is not iterable
,因为它不是像这样的数组,你不能迭代它,你应该做的是这样的:请记住,在您的 json 中,字段
MOD
和字段ADMINISTRATOR
是数组,这是必须迭代的,为了能够从这些数组中解析一个项目,您可以简单地调用[0]
用于第一个项目的值,依此类推。