我创建了一个 JSON 文件,其中包含多个对象,这些对象包含分配给字符串的命名值,如下所示,
{
"Obj1" : {
"Val1": "Obj 1, Test Value 1",
"Val2": "Obj 1, Test Value 2",
"Val3": "Obj 1, Test Value 3"
},
"Obj2" : {
"Val1": "Obj 2, Test Value 1",
"Val2": "Obj 2, Test Value 2",
"Val3": "Obj 2, Test Value 3"
}
}
我需要在 Next JS 中单独访问每个对象中的每个值,我尝试导入和解析数据,
import data from '~/data.json';
const obj1: any = JSON.parse(data["Obj1"]); // Side Note: What type should this const be?
console.log(obj1.Val1); // Desired Output: " Obj1, Test Value 1 "
但是,当我尝试这样做时,我遇到了这个错误,“类型为‘{Val1:string;}’的参数不能分配给类型为‘string’的参数。ts(2345)”
无论我怎么操作,都找不到解决此错误的方法。我的 JSON 或 TS 格式不正确吗?
问题在于
JSON.parse(data["Obj1"]);
表达方式。通过这样做,
JSON.parse(data["Obj1"]);
你实际上是在调用JSON.parse
这个对象:但是,
JSON.parse
需要一个字符串作为参数(并且该字符串将被转换为对象)。例如:Val1
因此,您只需执行以下操作即可解决问题并获得价值: