引入一个json文件并且赋值给一个变量 该变量和直接打印json文件显示的内容为什么不一样

2025年9月11日 by admin

比如以下代码,最终输出结果不一致:

文件名 data.json,变量名 dataContent,方法中的列表变量为 itemList

import dataContent from './data.json';

onLoad() {
    this.itemList = dataContent.content;
    console.log(dataContent.content, this.itemList);
}

这个问题可能与 JavaScript 如何处理引入的 JSON 文件的方式有关。让我们先解释一下这个过程。

当你引入一个 JSON 文件时,使用 import 语句,它实际上是将该文件的内容加载进来,并转化为一个 JavaScript 对象。例如:

import dataContent from './data.json';

此时,dataContent 是一个 JavaScript 对象,其中包含了 JSON 文件的所有内容。

问题的可能原因

  1. 浏览器与 Node.js 环境的区别
  • 如果你是在浏览器环境中运行这个代码,import 语句将从你的文件系统或 Web 服务器加载 data.json 文件。浏览器会将其转化为一个对象,在控制台中打印时,浏览器可能会以特定的格式呈现这个对象,显示成更易于阅读的结构。
  • 如果你在 Node.js 环境中运行代码,它会读取文件的内容并将其解析为 JSON 对象,所以打印出来的值就是 JSON 对象本身。
  1. JSON 文件内容的结构
  • console.log(content1.content) 会直接输出 JSON 文件中 content 字段的值。这个值可能是原始的数据对象,或者是一个数组,具体取决于你的 JSON 文件内容。
  • console.log(dataContent) 是打印整个 dataContent 对象,可能是包含多个字段的结构。所以两者打印出来的内容可能会有所不同,尤其是当 dataContent 是一个大对象,包含其他字段或数组时,直接打印 content1.content 只会输出其中的一部分。

例子

假设你的 data.json 文件内容如下:

{
  "content": [
    { "id": 1, "name": "Item 1" },
    { "id": 2, "name": "Item 2" }
  ]
}

那么:

import dataContent from './data.json';

onLoad() {
    console.log(dataContent); // 打印整个 dataContent 对象
    console.log(dataContent.content); // 仅打印 content 字段的内容
}

在控制台中,你可能会看到:

dataContent = { content: [{...}, {...}] }
dataContent.content = [{...}, {...}]

结论

console.log(content1.content)console.log(dataContent) 显示的内容不一样,是因为前者只打印了 content 字段的内容,而后者打印了整个 dataContent 对象,可能包括更多信息。