Javascript Can';t将我的JSON文件转换为JS对象
我的JSON文件如下所示:Javascript Can';t将我的JSON文件转换为JS对象,javascript,json,Javascript,Json,我的JSON文件如下所示: { "branding": { "body": { "header_text_color": "#224466", "body_text_color": "##224466", "background_color": "#224466" }, ..
{
"branding": {
"body": {
"header_text_color": "#224466",
"body_text_color": "##224466",
"background_color": "#224466"
},
...
}
}
在我的脚本中,我尝试导入该文件,然后将其转换为JS对象:
import templateConfigJSON from '@/config.json'
const templateConfig = JSON.parse(templateConfigJSON)
但我得到了一个错误:
JSON中的意外标记u
我做错了什么?用于将包含JSON符号的字符串转换为Javascript对象。因为它已经是一个.json
文件,所以不需要解析它:
import templateConfigJSON from "@/config.json";
console.log(templateConfigJSON); //outputs object
可能是对JavaScriptimport
语句的误解。
它用于以JavaScript语法导入文件
路径中带前缀的@
很可能是Webpack的resolve.alias
,它是源文件夹的替代文件。因此,例如
使用模块加载程序导入JSON
因此,当使用Webpack(由Vue配置)导入类似这样的JSON文件时:
从“@/myObject.json”导入myObject;
您可以立即直接使用它,就像之前定义的任何其他JavaScript对象一样:
const keys=Object.keys(myObject);
控制台日志(键);
不需要解析,因为这已经由import
完成
另见:
在vanilla JS中加载JSON
在普通JavaScript中,您必须通过XMLHttpRequest
加载JSON并对其进行解析,否则jQuery提供了方便的功能:
$.getJSON(“test.json”),函数(json){
log(json);
var myObject=JSON.parse(JSON);
});
另见:
闻起来像未定义的:)你能在解析之前使用templateconfig吗?对我来说它已经是一个对象了,所以我认为没有必要解析它,你可以直接使用它。我不完全同意解释“既然它已经是一个.json文件,你就不需要解析它”。通常JSON文件或字符串需要解析为JS对象。这里,import
已经负责解析了。这就是为什么我发布我的答案来提供额外的解释