vscode json

"什么是 JSON" → "VSCode 里哪些 JSON 文件" → "如何修改与运用"

🧩 一、什么是 JSON?

JSON(JavaScript Object Notation)是一种数据表示格式,全名是:

JavaScript 对象表示法

但它与语言无关,现在广泛用于配置、数据交换、API通信等。

✅ 一句话理解:

JSON 是一种用 {} 表示对象、用 [] 表示数组、用 "key": "value" 表示键值对的配置文件格式。


🔹 基本语法结构:

json 复制代码
{
    "name": "Tom",
    "age": 25,
    "skills": ["C", "Python", "Linux"],
    "married": false,
    "address": {
        "city": "Shenzhen",
        "zip": "518000"
    }
}
  • {}:包裹一个对象(类似结构体)
  • []:数组
  • "key":字符串类型的键名
  • ::键与值的分隔符
  • 值可以是:字符串、数字、布尔、对象、数组或 null
  • 不能有注释 (标准 JSON 不允许 ///* */

🔍 JSON 的语法规则:

特性 说明
键必须用双引号包裹 "key" 单引号 'key' 会报错
最后一项后不能有逗号 JSON 不支持"尾逗号"
支持嵌套 对象内可以嵌套对象或数组
值类型 string, number, object, array, boolean, null
类型 举例 说明
对象(object) { "a": 1, "b": 2 } 一组键值对,用花括号包起来
数组(array) [1, 2, 3] 有序数据列表
字符串(string) "hello" 必须用 双引号,不能用单引号
数字(number) 123, 3.14, -10 不用引号
布尔值(boolean) true, false 小写(和 JS/Python 一致)
空值(null) null 表示"无"或"空"
错误 原因 正确写法
❌ 用单引号 'key' JSON 只支持双引号 "key"
❌ 最后一项后多逗号 结尾不能多 , ✅ 删除最后一个逗号
❌ 有注释 // JSON 不支持注释 ✅ 删除注释
❌ 数字带前导零 0123 不合法 123

⚙️ 二、VS Code 中常见的 JSON 配置文件

当你写 C/C++ 时,VSCode 其实在后台靠这些 JSON 文件来帮你:

🧱 1️⃣ c_cpp_properties.json

定义 编译器路径、标准、头文件搜索路径、宏定义 等。

路径:

复制代码
.vscode/c_cpp_properties.json

示例:

json 复制代码
{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**",
                "/usr/include",
                "/usr/local/include"
            ],
            "defines": [
                "DEBUG",
                "VERSION=1.0"
            ],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "gcc-x64"
        }
    ],
    "version": 4
}

🔹 功能说明:

字段 说明
includePath 编译器搜索头文件的路径
defines 预定义宏,相当于 #define DEBUG
compilerPath 指定编译器(如 gcc)路径
cStandard C语言标准:c89/c99/c11
intelliSenseMode 智能提示模式,指定编译器架构

🧱 2️⃣ tasks.json

定义 如何编译、构建 程序。

比如执行 gcc main.c -o main 这类命令。

路径:

复制代码
.vscode/tasks.json

示例:

json 复制代码
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build C program",
            "type": "shell",
            "command": "gcc",
            "args": [
                "main.c",
                "-o",
                "main",
                "-Wall",
                "-g"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "problemMatcher": ["$gcc"]
        }
    ]
}

🔹 功能说明:

字段 说明
label 任务名,会显示在命令面板
type shell 或 process,决定用哪种执行方式
command 执行的命令(比如 gcc)
args 命令行参数
group 任务分组,如构建(build)或测试(test)
problemMatcher 错误信息解析规则(常用 $gcc

执行方式:

VSCode 中按 Ctrl+Shift+B 自动执行这个构建任务。


🧱 3️⃣ launch.json

定义 如何运行 / 调试 程序(配合 gdb)。

路径:

复制代码
.vscode/launch.json

示例:

json 复制代码
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Debug C program",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/main",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "miDebuggerPath": "/usr/bin/gdb",
            "preLaunchTask": "build C program"
        }
    ]
}

🔹 功能说明:

字段 作用
program 要运行的可执行文件路径
args 程序运行时的参数
cwd 工作目录
externalConsole 是否弹出终端运行
MIMode 调试器类型(gdb / lldb)
miDebuggerPath 调试器路径
preLaunchTask 调试前先执行的任务(如编译)

🧱 4️⃣ settings.json

定义编辑器的行为,比如缩进、字体、CMake配置、编译器提示等。

路径:

复制代码
.vscode/settings.json

示例:

json 复制代码
{
    "editor.tabSize": 4,
    "editor.insertSpaces": true,
    "files.associations": {
        "*.h": "c"
    },
    "C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools"
}

🧠 三、VSCode 中 JSON 的变量与替换规则

VSCode 的 JSON 文件中可以用 ${变量} 表示动态路径:

变量名 含义
${workspaceFolder} 当前打开的工程根目录
${file} 当前编辑的文件路径
${fileDirname} 当前文件所在目录
${fileBasename} 文件名(不带路径)
${fileBasenameNoExtension} 文件名(不带扩展名)

例:

json 复制代码
"command": "gcc",
"args": [
    "${file}",
    "-o",
    "${fileDirname}/${fileBasenameNoExtension}"
]

相当于执行:

bash 复制代码
gcc main.c -o ./main

🧩 四、自己修改与应用的技巧

  1. 找规律:JSON 文件其实就是把命令写成键值对形式;

  2. 不会写就用 GUI

    • Ctrl+Shift+P → 搜索 "C/C++: Edit Configurations (UI)";
    • 它会自动生成并修改 c_cpp_properties.json
  3. 调试时先保证 tasks.json 可用

    调试器(launch.json)依赖编译任务;

  4. 改错了 JSON 文件怎么办?

    VSCode 自带语法检查,会在红色波浪线处显示错误;

  5. 善用变量替换,避免硬编码绝对路径;

  6. 注意 JSON 不能有注释

    如果想写说明,可以加 _note 字段,例如:

    json 复制代码
    "_note": "用于构建 ARM 交叉编译版本"

🧱 五、一个完整 VSCode + C 的配置示例

假设工程结构如下:

复制代码
project/
├── main.c
└── .vscode/
    ├── tasks.json
    ├── launch.json
    ├── c_cpp_properties.json

你可以这样配置:

🧩 .vscode/c_cpp_properties.json
json 复制代码
{
    "configurations": [
        {
            "name": "Linux",
            "includePath": ["${workspaceFolder}/**"],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "c11",
            "intelliSenseMode": "gcc-x64"
        }
    ],
    "version": 4
}
🧩 .vscode/tasks.json
json 复制代码
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "type": "shell",
            "command": "gcc",
            "args": [
                "main.c",
                "-o",
                "main",
                "-g"
            ],
            "group": { "kind": "build", "isDefault": true }
        }
    ]
}
🧩 .vscode/launch.json
json 复制代码
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Debug",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/main",
            "args": [],
            "cwd": "${workspaceFolder}",
            "stopAtEntry": false,
            "externalConsole": true,
            "MIMode": "gdb",
            "miDebuggerPath": "/usr/bin/gdb",
            "preLaunchTask": "build"
        }
    ]
}

现在:

  • Ctrl+Shift+B → 编译;
  • F5 → 调试;
  • 你就完全掌握了从源码到调试的 VSCode 自动化流程。

✅ 总结一张图:

文件名 作用 关键字段
c_cpp_properties.json 配置 IntelliSense、头文件、宏、标准 includePath, defines
tasks.json 编译任务定义 command, args
launch.json 运行/调试配置 program, preLaunchTask
settings.json 编辑器行为 editor., C_Cpp.

相关推荐
冷天气会感冒6 小时前
关闭VSCode的推荐插件(Recommended extensions)提示
ide·vscode·编辑器
羊锦磊7 小时前
[ Redis ] SpringBoot集成使用Redis(补充)
java·数据库·spring boot·redis·spring·缓存·json
Y unes10 小时前
《i.MX6ULL LED 驱动实战:内核模块开发与 GPIO 控制》
linux·c语言·驱动开发·vscode·ubuntu·嵌入式
古一木11 小时前
ROS1+Vscode
ide·vscode·编辑器
YONYON-R&D11 小时前
VSCODE 调试C程序时 打印中文
ide·vscode·编辑器
冷天气会感冒12 小时前
关闭VSCode的GitHub Copilot功能
vscode·github·copilot
盒马盒马15 小时前
Rust:Windows 系统 VsCode 环境搭建
windows·vscode·rust
web守墓人16 小时前
【编辑器】一款IDE(如VSCode等) 如何解析各类文件大纲及跳转对应行
ide·vscode·编辑器
来块小鱼饼干(≧^.^≦)1 天前
教你如何使用VSCode的EIDE插件开发STM32(包括任何ARM内核芯片)最详细教程
ide·vscode·stm32·arm·keil