vscode的json文件解析

vscode的json文件解析

  • 0.参考链接
  • 1.什么是JSON
  • 2.JSON语法
    • 2.0数据类型
    • 2.1对象
    • 2.2数组
    • 2.3嵌套
  • 3.vscode包含的JSON文件介绍
  • 4.vscode包含的JSON文件解析
    • 4.1 task.json
    • 4.2 launch.json
    • 4.3 settings.json
    • 4.4 c_cpp_properties.json
    • 4.5 package.json(详细的看参考链接)

0.参考链接

[1]VsCode的常用配置文件(.json)介绍
[2]vscode launch.json和task.json配置(重要参数详解)
[3]Vs Code中C/C++配置launch.json和tasks.json文件详细步骤
[4]vscode的json文件怎么写
[5]VS Code上C++的环境配置&tasks.json和launch.json解析
[6]图文教程 | 2024年最新VSCode下载和安装教程c/c++环境配置,json文件详解,实用插件分享
[7]VSCode插件开发核心文件package.json字段解析及核心属性解析

1.什么是JSON

  JSON(JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式。它基于 ECMAScript(European Computer Manufacturers Association, 欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
  简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在网络或者程序之间轻松地传递这个字符串,并在需要的时候将它还原为各编程语言所支持的数据格式,例如在 PHP 中,可以将 JSON 还原为数组或者一个基本对象。在用到AJAX时,如果需要用到数组传值,这时就需要用JSON将数组转化为字符串。

2.JSON语法

2.0数据类型

– 字符串:使用双引号””包围,如 “name”: “John”。
– 数字:直接写数字,如 “age”: 20。
– 布尔值:写truefalse,如 “isStudent”: true。
– 数组:使用中括号[]来表示一组值,每个值之间用逗号隔开,如 “hobbies”: [“reading”, “running”, “cooking”]。
– 对象:使用大括号{}来表示,每个键值对之间用逗号隔开,如 “address”: {“city”: “New York”, “country”:USA}

2.1对象

  在Json文件中,对象是由一组键值对组成的。一个键值对包括一个键(字符串类型)和一个值(可以是任意类型)。编写对象的格式如下:

"`json
{“key1”: “value1”,“key2”: “value2”,…
}
"`

2.2数组

  在Json文件中,数组是由一组值组成的,每个值可以是任意类型。编写数组的格式如下:

"`json
{“key”: [“value1”,“value2”,…]
}
"`

2.3嵌套

  Json文件中可以嵌套对象和数组。可以在对象中包含对象,或者在数组中包含数组。

"`json
{“obj”: {“key1”: “value1”,“key2”: “value2”},“arr”: [“value1”,“value2″]
}
"`

3.vscode包含的JSON文件介绍

  配置这些文件能够使VSCode更好地理解你的C/C++项目,提供高效的代码编辑、构建和调试功能。例如,c-cpp-properties.json可以提高代码导航和错误检测的准确性,launch.json使得调试过程更加便捷,而task.json则有助于自动化构建流程,提高开发效率。通过自定义这些配置,开发者可以根据自己的项目需求和工作流进行个性化设置。在.vscode目录下,你可以找到并编辑这些配置文件,以适应你的C/C++开发环境。
(1)launch.json
  launch.json文件用于配置调试会话的参数。在这里,你可以定义多个启动配置,每个配置可以有不同的目标(如调试可执行文件、调试远程程序、调试核心转储等)。你需要指定program为要调试的程序路径,args为传递给程序的命令行参数,stopAtEntry决定是否在进入main函数时暂停,以及MIMode为调试器模式(对于C/C++通常是gdblldb)。
   说明:launch.json用于 VsCode 调试程序。
   注意:在高版本的 C/C++插件只会生成 launch.json 文件,而低版本的C/C++插件中会生成 launch.json 文件和 tasks.json 文件。
(2)tasks.json
   task.json文件则用来定义构建任务,这些任务可以在VSCode中运行以编译、清理或者执行其他命令。你可以创建自定义任务,如编译当前活动文件、整个项目或清理生成的中间文件。每个任务都有一个command属性,表示要执行的命令,以及args属性,包含命令的参数。此外,problemMatcher属性用于解析编译器输出并高亮显示错误和警告。
  说明:tasks.json用于 VsCode 执行任务,例如:执行 cmake 命令、执行 make 命令的任务等; tasks.json 不是必须的,在 VsCode 终端输入命令或者通过插件执行命令都可以代替 tasks.json 的功能。
  注意:tasks.json仅在低版本的 C/C++插件中生效,高版本的C/C++插件只会生成 launch.json 文件不会生成 tasks.json 文件。
(3)settings.json
  说明:settings.json允许用户根据个人喜好和项目需求深度定制 VSCode 的工作环境和功能表现。
(4)c-cpp-properties.json
  这个文件是VSCode的C/C++扩展用于定义项目的编译器路径和配置属性。在这个文件中,你可以指定includePath来添加头文件搜索路径,defines来定义预处理器宏,intelliSenseMode来设定代码补全和错误检查的模式。例如,如果你正在使用GCC或Clang,你可以设置compilerPath为相应的编译器路径,并确保cppStandard指定了合适的C++标准(如c++11c++14等)
(5)package.json
  package.json里面有许多信息,包括

  • 依赖模块(dependencies),开发、部署的时候都需要
  • 开发依赖模块(devDependencies),开发时候需要,但部署则不必。比如,grunt方面的一些东西。
  • main:大概相当于程序里的main函数,是个入口,指明了入口文件。通常用在一些安装的模块里面。

  package-lock.json 是在 npm install时候生成一份文件。记录了node_modules目录下所有模块(包)的名称、版本号、下载地址、及这个模块又依赖了哪些依赖。package.json记录当前项目所依赖模块的版本信息,更新模块时锁定模块的大版本号(版本号的第一位),不能锁定后面的小版本。
  npm5以前,没有package-lock.json这个文件。package.json文件会记录你项目中所需要的所有模块。当你执行npm
install的时候,node会先从package.json文件中读取所有dependencies信息,然后根据dependencies中的信息与node_modules中的模块进行对比,没有的直接下载,已有的检查更新。
   因为package.json只能锁定模块的大版本号(版本号的第一位),不能锁定后面的小版本,所以你每次重新npm
install时候拉取的都是该大版本下面最新的版本。一般我们为了稳定性考虑我们不能随意升级依赖包,因为如果换包导致兼容性bug出现很难排查,
这样很容易出现问题,所以package-lock.json就是来解决包锁定不升级问题的
  另外,package.json文件只记录你通过npm install方式安装的模块信息,
而这些模块所依赖的其他子模块的信息不会记录。
npm5以后,package-lock.json文件锁定所有模块的版本号,包括主模块和所有依赖子模块。当你执行npm
install的时候,node从package.json文件读取模块名称,从package-lock.json文件中获取版本号,然后进行下载或者更新。因此,正因为有了package-lock.json文件锁定版本号,所以当你执行npm
install的时候,node不会自动更新package.json文件中的模块,必须用npm install
packagename@x.x.x(指定版本号)来进行安装才会更新,package-lock.json文件中的版本号也会随着更新。

4.vscode包含的JSON文件解析

  task是任务的意思,我们的编译和运行就是我们想要vscode执行的任务,为此我们要在tasks.json里写两个task:Build和Run(这里为什么不是Compile呢?是因为从源码到可执行的过程中不仅是编译(Compile),还有预编译、链接等过程,用构建(Build)来表述更合适)。除了编译和运行,我们还需要进行调试(Debug),这个就不是通过task来实现的了,而是通过launch.json文件来实现。

4.1 task.json

在这里插入图片描述
  “label”: 对应launch.json中的 “preLaunchTask”;(一定要一致,决定了launch.json之前先运行哪个配置,tasks是一个array类型,里面理论来说可以存多个配置)
  “command”: 这个是编译器的命令,相当于选择了哪个编译器 (我配置了环境变量,所以这里是g++.exe,没有配置的话可能就需要按照 路径\g++.exe来配置)
  “args”:编译器后面的命令,可以和command一起看 , 连起来简便看就是 g++ -g filename -o -finame.exe
  这几个综合来说就是把一个.cpp文件编译成了一个可执行文件 .exe,这就是tasks.json的主要工作内容

4.2 launch.json

  vscode除了代码编辑以外,还可以进行代码的运行和调试,而此文件就是代码运行和调试必不可少的东西,在launch.json中我们会指定运行的程序的名字、传递的参数等信息
在这里插入图片描述
  preLaunchTask":在执行launch.json之前需要先执行task.json,对应tasks.json的"label",看哪个label和他匹配,就执行哪个task
  “program”:可执行的文件,相当于选择了哪个可执行文件等一下要去运行
  “miDebuggerPath”:调试程序路径,这里一定要选择gdb,因为他是debug的时候用的,博主之前以为他是选择用哪个编译器,然后用的一直都是gcc/g++ 所以一直有问题,后面纠正过来就好了。(他的路径参数就需要根据自己的mingw64/bin下的路径来填)
  综合来说这个launch.json就是把一个可执行文件.exe 执行起来,可以运行也可以debug。
  所以这两个文件结合一下就达到了把一个.cpp文件或.c文件(这里用的是g++编译器,所以是.cpp文件,如果需要编译.c文件,只需要再配置一个gcc编译器即可)先由tasks.json编译为可执行文件filename.exe/.out (或者直接-o filename 都是可以的),然后再由launch.json把一个.exe/.out 文件执行起来。

4.3 settings.json

  settings.json 文件是 VSCode 的用户或工作区设置文件。它允许你自定义 VSCode 的各种行为和外观。
  用户设置 (User Settings): 这些设置会应用到你的所有 VSCode 项目和窗口。你可以在左侧的“设置”图标(通常是一个齿轮)中编辑这些设置,然后点击右上角的 … 图标并选择“在 settings.json 中编辑”来查看或修改 settings.json 文件。
工作区设置 (Workspace Settings): 这些设置仅应用于当前打开的工作区。它们通常存储在 .vscode/settings.json 文件中,位于你的工作区根目录下。

4.4 c_cpp_properties.json

  主要用来设置包含头文件的路径,设置C/C++支持的版本号等。

4.5 package.json(详细的看参考链接)

{// 插件的名字,必须全部小写且不能有空格"name": "cat-extension",// 用于显示在应用市场的名称,支持中文"displayName": "cat_extension",// 对于插件的描述"description": "cat extension",// 版本号"version": "0.0.1",// 表示插件最低支持的vscode版本"engines": {"vscode": "^1.68.0"},// 插件应用市场分类"categories": ["Other"],// 插件的图标"icon":"",// 扩展的激活事件的数组,就是这个插件可以被哪些事件激活"activationEvents": ["onCommand:cat-extension.helloWorld"],// 插件的主入口"main": "./dist/extension.js",// 插件的配置项"contributes": {"commands": [{"command": "cat-extension.helloWorld","title": "Hello World"}]},"scripts": {"vscode:prepublish": "npm run package","compile": "webpack","watch": "webpack --watch","package": "webpack --mode production --devtool hidden-source-map","compile-tests": "tsc -p . --outDir out","watch-tests": "tsc -p . -w --outDir out","pretest": "npm run compile-tests && npm run compile && npm run lint","lint": "eslint src --ext ts","test": "node ./out/test/runTest.js"},// 开发依赖"devDependencies": {"@types/vscode": "^1.68.0","@types/glob": "^7.2.0","@types/mocha": "^9.1.1","@types/node": "16.x","@typescript-eslint/eslint-plugin": "^5.27.0","@typescript-eslint/parser": "^5.27.0","eslint": "^8.16.0","glob": "^8.0.3","mocha": "^10.0.0","typescript": "^4.7.2","ts-loader": "^9.3.0","webpack": "^5.72.1","webpack-cli": "^4.9.2","@vscode/test-electron": "^2.1.3"}
}

  activationEvents插件的激活事件数组,在什么情况下插件会被激活,当激活事件发生时,插件将被激活。
  configuration是暴露给用户的配置,用户可以从”用户设置“和”工作区设置“中修改暴露的选项。
  menus为编译器或者文件管理器设置命令的菜单项,即当点击菜单项时会触发命令,至少包含两个属性

  • 选中时调用的命令 command
  • 何时显示这个菜单项 when

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/391346.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python设计模式 - 抽象工厂模式

定义 抽象工厂模式是一种创建型设计模式,它提供了一种创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 产品等级结构与产品族 为了更好地理解抽象工厂模式,先引入两个概念: 产品等级结构:就是产品的…

试用AWS全新神器:Amazon Bedrock的「Open Artifacts」版Claude.ai Artifacts

Claude.ai的Artifacts真是太方便了。 GitHub上的AWS Samples仓库中有一个仿制Artifacts的应用程序。 Open Artifacts for Amazon Bedrock https://github.com/aws-samples/open_artifacts_for_bedrockhttps://github.com/aws-samples/open_artifacts_for_bedrock本文将介绍「…

【C++】数组案例 五只小猪称体重

题目:给出五只小猪体重,找出最大的体重的值并打印 思路:利用数组写入五只小猪的体重,让每一个元素都赋值给一个整型变量并每赋值一次就于下一个数组中的元素比,若是大就继续赋值给这个变量,若是小则不赋值…

H81002S 1.7mm网络变压器:BMS汽车蓝牙接收器中的超薄共模电感科技

华强盛导读:在当今这个日新月异的汽车科技领域,每一处细节都蕴含着创新与突破。作为电动汽车心脏的电池管理系统(BMS),其高效稳定的运行不仅关乎续航与安全,更是智能化驾驶体验的基石。而在这背后&#xff…

win7安装mysql-installer-community-8.0.11.0

1、安装Microsoft Visual C 2019 Redistributable Package (x64) 官网下载地址:https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?viewmsvc-160#latest-microsoft-visual-c-redistributable-version 通过百度网盘分享的文件&#xff1…

Ubuntu安装nvidia-docker并使用的正确方式

Ubuntu安装docker: ubuntu(24.04)以及WSL2安装docker的详细教程_unbantu安装docker-CSDN博客文章浏览阅读646次,点赞5次,收藏3次。默认情况下,只有root用户和docker组的用户才能运行Docker命令。我们可以将当前用户添加到docker组,以避免每次使用Docker时都需要使用sudo。…

DAP-Seq:解锁转录因子结合位点的新钥匙

引言: 在基因组学的浩瀚宇宙中,转录因子如同掌管基因表达的神秘钥匙。它们与DNA上的特定序列结合,调控着生命活动的每一个节拍。然而,传统的研究方法在探索这些结合位点时面临诸多挑战。今天,我们将一起了解一种创新技…

多路I/O复用之select、poll、epoll

一、多进程/多线程模型的不足 为每个请求分配一个进程或线程的方式会带来较大的资源开销。创建和切换进程/线程需要消耗系统资源,包括内存、CPU 时间等。例如,在一个大规模的服务器环境中,如果同时有数千个请求到来,为每个请求创建…

01 LVS负载均衡群集

集群 在互联网应用中,随着站点对硬件的性能、响应速度、服务稳定性、数据可靠性等要求越来越高,单台服务器越来越力不从心 集群的含义 Cluster,集群也叫群集由多台主机构成,但对外只表现为一个整体 集群分类 类型 负载均衡集…

C++初学(10)

10.1、共用体 共用体是一种数据格式,它能够存储不同的数据类型,但只能同时存储其中的一种类型。比如说:结构可以同时存储int、long、和double,而共用体只能存储int、long、或double。共用体的句式与结构相似,但含义不…

《Milvus Cloud向量数据库指南》——Zilliz Cloud 高可用性深度解析:赋能GenAI应用,引领非结构化数据新纪元

在人工智能与大数据技术日新月异的今天,非结构化数据的处理与分析已成为推动行业智能化转型的关键驱动力。Zilliz Cloud,作为基于开源向量数据库Milvus构建的全托管解决方案,不仅革新了非结构化数据的存储与查询方式,更以其卓越的高可用性设计,为开发人员构建高效、可靠的…

c++----内存管理

okk,大家好。我们大家学习了鄙人的前面前面几篇博客,并且还稍微使用了一些c的基础知识。并且我们前面都说过,我们前面学习的知识都说过。我们前面的几篇博客都是我们以后使用c基础。但是我们大家都知道现在代码都关注什么时间啊,内…

【linux深入剖析】初识线程---线程概念

🍁你好,我是 RO-BERRY 📗 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 🎄感谢你的陪伴与支持 ,故事既有了开头,就要画上一个完美的句号,让我们一起加油 目录 1. Linux线程概念什么是线…

k8s中yaml文件的编写

目录 1.编写pod.yaml 2.编写deploment.yaml 3.编写service.yaml关联创建的pod 4.总结获取K8S资源配置清单文件模板方法 方法1:根据现有资源导出yaml文件修改配置,重新创建 方法2:根据现有资源,进入其配置中,复制…

中国AI大模型场景探索及产业应用调研报告

AI大模型发展态势 定义 AI大模型是指在机器学习和深度学习领域中,采用大规模参数(至少在一亿个以上)的神经网络模型,AI大模型在训练过程中需要使用大量的算力和高质量的数据资源。 产业规模 2023年,中国大模型市场规模为147亿。结合《202…

滚雪球学Java(65-5):面对Properties的各种坑,你需要知道的Java小技巧

咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java SE相关知识点了,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好…

C++初学者指南-5.标准库(第二部分)--移除元素算法

C初学者指南-5.标准库(第二部分)–移除元素算法 文章目录 C初学者指南-5.标准库(第二部分)--移除元素算法remove / remove_ifremove_copy / remove_copy_ifunique / unique_copyerase / erase_if相关内容 不熟悉 C 的标准库算法? ⇒ 简介 remove / remove…

【解决error】安装torch 1.1.0

第一步 当云服务器上没有指定版本的torch可以选择 先确定指定torch符合的python版本号 例如这里&#xff0c;我需要安装torch1.1.0&#xff0c;所以需要python>3.6 且 python<3.7 根据python版本&#xff0c;确定服务器安装torch的版本配置 第二步 新建conda虚拟环境…

iPhone苹果密码解锁工具专业版_不限制电脑

iPhone苹果密码解锁工具专业版_不限制电脑 Aiseesoft iPhone Unlocker&#xff1a;轻松解锁iPhone。功能强大&#xff1a;一键移除4位、6位密码、Touch ID和Face ID。 隐私保护&#xff1a;创建密码&#xff0c;安全无忧。数据提醒&#xff1a;解锁时&#xff0c;注意数据和设…

docker部署可执行的jar

1.将项目打包&#xff0c;上传到服务器的指定目录 2.在该目录下创建Dockerfile文件 3.Dockerfile写入如下指令 # 基于哪个镜像 FROM java:8 # 拷贝文件到容器&#xff0c;也可以直接写成ADD xxxxx.jar /app.jar ADD springboot-file-0.0.1.jar file.jar RUN bash -c touch /…