Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can';t将我的JSON文件转换为JS对象_Javascript_Json - Fatal编程技术网

Javascript Can';t将我的JSON文件转换为JS对象

Javascript Can';t将我的JSON文件转换为JS对象,javascript,json,Javascript,Json,我的JSON文件如下所示: { "branding": { "body": { "header_text_color": "#224466", "body_text_color": "##224466", "background_color": "#224466" }, ..

我的JSON文件如下所示:

{
  "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

可能是对JavaScript
import
语句的误解。 它用于以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
已经负责解析了。这就是为什么我发布我的答案来提供额外的解释