当前位置: 首页 > news >正文

c语言用json解析库(jansson)检测字符串是否是json格式的数据

C语言检测字符串是否是json格式的数据,可以用jansson库检测,也可以用cjson库来校验。但是若数据格式有问题,jansson可以指出哪里有错误,cjson无法指出。

下面就演示C语言如何使用jansson库检测字符串是否是json格式的数据。

1.下载jansson库源码(zip 文件)

GitHub - akheron/jansson: C library for encoding, decoding and manipulating JSON data

2.编译jansson

2.1.windows 下编译所需环境

a. cmake(可参考文章【windows下cmake的小白级入门使用教程(hello world)】(windows下cmake的小白级入门使用教程(hello world)_cmake windows_西晋的no1的博客-CSDN博客 )

b. vistual studio(如下图是vs2022必须的组件,cmake支持哪个版本的vs,可参照文章【查看当前cmake版本支持哪些版本的Visual Studio】( 查看当前cmake版本支持哪些版本的Visual Studio-CSDN博客 )进行确定)

2.2.编译过程

a.如果是下载的 zip 文件,先解压代码,进入代码文件夹 jansson-master,在当前文件夹的地址栏中输入cmd,然后回车,调出命令行窗口。

b.在命令行窗口中依次输入下述3行内容:

md build

cd build

cmake -G "Visual Studio 17" ..

注:需要根据电脑上安装的cmake和vs版本进行填写,如有些低版本的cmake不支持Visual Studio 2022(升级cmake版本),有的电脑上没有安装Visual Studio 2022(安装Visual Studio 2022,或者选择电脑上有的版本)

vs版本对应

Visual Studio 17 2022       

= Generates Visual Studio 2022 project files.

    Use -A option to specify architecture.

Visual Studio 16 2019       

= Generates Visual Studio 2019 project files.

   Use -A option to specify architecture.

Visual Studio 15 2017 [arch]

= Generates Visual Studio 2017 project files.

   Optional [arch] can be "Win64" or "ARM".

Visual Studio 14 2015 [arch]

= Generates Visual Studio 2015 project files.

   Optional [arch] can be "Win64" or "ARM".

Visual Studio 12 2013 [arch]

= Generates Visual Studio 2013 project files.

   Optional [arch] can be "Win64" or "ARM".

Visual Studio 11 2012 [arch]

= Generates Visual Studio 2012 project files.

   Optional [arch] can be "Win64" or "ARM".

Visual Studio 10 2010 [arch]

= Deprecated.  Generates Visual Studio 2010  project files.

   Optional [arch] can be   "Win64" or "IA64".

Visual Studio 9 2008 [arch] 

= Generates Visual Studio 2008 project files.

   Optional [arch] can be "Win64" or "IA64".

编译成功之后,在build文件夹下会生成所有的测试工程。主要内容如下

build

 + private_include

 + include

 + jansson.sln

c.用Visual Studio打开build文件夹下的jansson.sln

d.根据实际使用场景选择合适的版本(Debug或Release),然后选择生成->重新生成解决方案,等待一段时间,可以看到0失败

e.此时可以在build文件夹下看到lib文件夹下有个Debug或Release文件夹,里面有编译后生成的文件静态库jansson_d.lib

3.使用示例

3.1 新建C语言工程

具体操作过程可以参考文件【VS2022 和 VS2010 C语言控制台输出 Hello World】(https://blog.csdn.net/xijinno1/article/details/127826231)

3.2 demo.cpp文件的同文件夹下新建一个文件夹,命名为【jansson

3.3 build文件夹下的3个文件(jansson.hjansson_config.hjansson_d.lib)粘贴到jansson文件夹下

注意:后续3步的操作,一定要在与编译jansson的配置一样,否则程序将不可使用jansson_d.lib

3.4 demo工程属性中添加包含目录

$(LocalDebuggerWorkingDirectory)jansson

3.5 demo工程属性中添加附加库目录

$(LocalDebuggerWorkingDirectory)jansson

3.6 demo工程属性中添加附加依赖项

jansson_d.lib

3.7 将下述示例代码覆盖demo.cpp中的所有内容

#include "jansson.h"int main() {const char* text = "{ \"name\":\"man\", \"age\":30}";json_error_t error;// json_t用于引用任何JSON节点json_t* root = json_loads(text, 0, &error);// 如果读取失败,自动置为空指针if (!root) {// 输出具体的失败信息printf("error: on line %d: %s\n", error.line, error.text);return 1;}else {json_decref(root); // 释放JSON对象。}return 0;
}

3.8 运行测试程序

程序正常运行,无任何输出。

若将

const char* text = "{ \"name\":\"man\", \"age\":30}";

替换成

const char* text = "{ \"name\":\"man\, \"age\":30}";

运行程序,将有如下输出:

相关文章:

c语言用json解析库(jansson)检测字符串是否是json格式的数据

C语言检测字符串是否是json格式的数据,可以用jansson库检测,也可以用cjson库来校验。但是若数据格式有问题,jansson可以指出哪里有错误,cjson无法指出。 下面就演示C语言如何使用jansson库检测字符串是否是json格式的数据。 1.下载…...

我再记录一个bug

项目场景: 提示:这里简述项目相关背景: 例如:项目场景:示例:通过蓝牙芯片(HC-05)与手机 APP 通信,每隔 5s 传输一批传感器数据(不是很大) 问题描述 提示:这里描述项目中遇到的问题&#xff1…...

AJAX: 对话框大全

AJAX:$.ajax({url: "/admin/cutting/getDataWeek",type: "GET",data:{},dataType:json,success: function (res) {if (res.code 1) {}},error:function (error) {console.log(请求失败);console.log(error);}}); $(.sub).unbind(click).click(funct…...

LeetCode讲解篇之40. 组合总和 II

文章目录 题目描述题解思路题解代码 题目描述 题解思路 按升序排序candidates,然后遍历candidates,目标数减去当前candidates的数,若该结果小于0,因为candidates的元素大于0,所以后续不会再出现让计算结果等于0的情况…...

RK3568平台 GPIO子系统框架

一.gpio 子系统简介 gpio 子系统顾名思义,就是用于初始化 GPIO 并且提供相应的 API 函数,比如设置 GPIO为输入输出,读取 GPIO 的值等。gpio 子系统的主要目的就是方便驱动开发者使用 gpio,驱动 开发者在设备树中添加 gpio 相关信…...

buu第五页 wp

[RootersCTF2019]babyWeb 预期解 一眼就是sql注入,发现过滤了 UNION SLEEP " OR - BENCHMARK盲注没法用了,因为union被过滤,堆叠注入也不考虑,发现报错有回显,尝试报错注入。 尝试: 1||(updatex…...

【论文阅读】以及部署BEVFusion: A Simple and Robust LiDAR-Camera Fusion Framework

BEVFusion: A Simple and Robust LiDAR-Camera Fusion Framework BEVFusion:一个简单而强大的LiDAR-相机融合框架 NeurIPS 2022 多模态传感器融合意味着信息互补、稳定,是自动驾驶感知的重要一环,本文注重工业落地,实际应用 融…...

N——>BatchSize 数据维度理解和处理(chun, cat, squeeze, unsqueeze)

数据处理之N——>BatchSize N——>batch_size train_data TensorDataset(torch.Tensor(x_train).double(), torch.Tensor(y_train).double()) train_loader DataLoader(train_data, batch_sizeargs.bs, shuffleTrue, drop_lastTrue) for batch_idx, (inputs, results…...

【编解码格式】AV1

AV1 AOMedia Video 1(简称AV1)是一个开放、免专利的视频编码格式,专为通过网络进行流传输而设计。它由开放媒体联盟(AOMedia)开发,目标是取代其前身VP9[2],该联盟由半导体企业、视频点播供应商…...

SLAM ORB-SLAM2(6)系统对象

SLAM ORB-SLAM2(6)系统对象 1. 封装2. 成员变量2.1. 核心数据2.2. 三个对象2.3. 三个线程2.4. 跟踪状态3. 成员函数4. 构造函数5. 数据驱动接口1. 封装 在 《SLAM ORB-SLAM2(5)例程了解》 了解到创建了一个 ORB_SLAM2::System 类型的对象 然后不断的把数据供给该对象就可以…...

03、Python 字符串高级用法

目录 Python 字符串高级用法转义字符字符串格式化序列相关的方法大小写相关的方法dir 可以查看某个类的所有方法删除空白查找、替换相关方法 Python 字符串高级用法 转义字符 字符串格式化 序列相关的方法 字符串本质就是由多个字符组成,字符串的本质就是不可变序…...

armbian安装gcc、g++

文章目录 安装GCC安装G 安装GCC 打开终端&#xff0c;更新软件包列表&#xff1a; sudo apt update安装GCC&#xff1a; sudo apt install gcc如果需要安装特定版本的GCC&#xff0c;可以使用以下命令&#xff1a; sudo apt install gcc-<version> # sudo apt install g…...

Linux多线程服务端编程:使用muduo C++网络库 学习笔记 第二章 线程同步精要

并发编程有两种基本模型&#xff0c;一种是message passing&#xff0c;另一种是shared memory。在分布式系统中&#xff0c;运行在多台机器上的多个进程的并行编程只有一种实用模型&#xff1a;message passing。在单机上&#xff0c;我们也可以照搬message passing作为多个进…...

中间件安全-CVE复现WeblogicJenkinsGlassFish漏洞复现

目录 服务攻防-中间件安全&CVE复现&Weblogic&Jenkins&GlassFish漏洞复现中间件-Weblogic安全问题漏洞复现CVE_2017_3506漏洞复现 中间件-JBoos安全问题漏洞复现CVE-2017-12149漏洞复现CVE-2017-7504漏洞复现 中间件-Jenkins安全问题漏洞复现CVE-2017-1000353漏…...

辅助驾驶功能开发-功能规范篇(16)-2-领航辅助系统NAP-HMI人机交互

书接上回 2.3.7HMI人机交互 2.3.7.1显示 (1)图标 序号 图标状态 (图形、颜色供参考) 含义说明 备注 1 辅助驾驶功能READY (允许激活) 2 辅助驾驶功能激活 3 辅助驾驶系统故障 4...

[计算机入门] 应用软件介绍(娱乐类)

3.21 应用软件介绍(娱乐类) 3.21.1 音乐&#xff1a;酷狗 音乐软件是一类可以帮助人们播放、管理和发现音乐的应用程序。它们提供了丰富的音乐内容&#xff0c;用户可以通过搜索、分类浏览或个性化推荐等方式找到自己喜欢的歌曲、专辑或艺术家。音乐软件还通常支持创建和管理…...

SL8541 android系统环境+编译

1.Ubuntu系统的安装 最好使用ubuntu18.0.4 2.工具环境包的安装 // 安装Android8.1源码编译环境 sudo apt-get install openjdk-8-jdk --------------ok sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g-multilib --------------ok sudo…...

【苍穹外卖 | 项目日记】第八天

前言&#xff1a; 昨天晚上跑完步回来宿舍都快停电了&#xff0c;就没写项目日记&#xff0c;今天补上 目录 前言&#xff1a; 今日完结任务&#xff1a; 今日收获&#xff1a; 引入百度地图接口&#xff1a; 引入spring task &#xff0c;定时处理异常订单&#xff1a; …...

概念解析 | 毫米波雷达与计算机视觉的融合

注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:毫米波雷达与计算机视觉的融合。 毫米波雷达与计算机视觉的融合 Sensors | Free Full-Text | MmWave Radar and Vision Fusion for Object Detection in Autonomous Driving: A …...

嵌入式硬件中常见的100种硬件选型方式

1请列举您知道的电阻、电容、电感品牌&#xff08;最好包括国内、国外品牌&#xff09;。 电阻&#xff1a; 美国&#xff1a;AVX、VISHAY 威世 日本&#xff1a;KOA 兴亚、Kyocera 京瓷、muRata 村田、Panasonic 松下、ROHM 罗姆、susumu、TDK 台湾&#xff1a;LIZ 丽智、PHY…...

游戏开发者必看:如何在Unity中实现Cook-Torrance PBR材质(附完整Shader代码)

Unity高级PBR材质实战&#xff1a;Cook-Torrance模型全解析与Shader优化 在游戏开发领域&#xff0c;物理基础渲染&#xff08;PBR&#xff09;已成为次世代画面的标配技术。作为Unity开发者&#xff0c;掌握Cook-Torrance BRDF模型的实现原理与优化技巧&#xff0c;能够显著提…...

Git核心概念与版本控制思想启蒙

Git核心概念与版本控制思想启蒙 那天下午,调试器停在一个诡异的堆栈溢出位置。我盯着屏幕上的十六进制地址,突然意识到——三小时前能正常运行的代码,现在彻底崩了。更糟糕的是,我完全想不起自己改过哪些文件。Ctrl+Z按到手酸,文件恢复对话框弹了又弹,最后只能对着编译错…...

小红书数据采集终极指南:5分钟快速上手Python爬虫实战

小红书数据采集终极指南&#xff1a;5分钟快速上手Python爬虫实战 【免费下载链接】xhs 基于小红书 Web 端进行的请求封装。https://reajason.github.io/xhs/ 项目地址: https://gitcode.com/gh_mirrors/xh/xhs 想要获取小红书上的公开数据&#xff0c;却总是被复杂的反…...

别再为PLC和DCS通讯头疼了!手把手教你用Modbus桥接器搞定西门子S7-300/400与DCS对接

工业自动化实战&#xff1a;西门子PLC与DCS系统的高效Modbus桥接方案 在工业自动化现场&#xff0c;不同品牌设备间的数据互通一直是工程师的痛点。上周在化工厂遇到个典型案例&#xff1a;产线中控室的DCS系统需要实时读取西门子S7-300 PLC的温度数据&#xff0c;但两者协议不…...

JS逆向|猿人学逆向反混淆练习平台第13题加密分析

关注它&#xff0c;不迷路。本文章中所有内容仅供学习交流&#xff0c;不可用于任何商业用途和非法用途&#xff0c;否则后果自负&#xff0c;如有侵权&#xff0c;请联系作者立即删除&#xff01;一.题目地址https://match.yuanrenxue.cn/match/13二.抓包分析先打开控制台&…...

LangChain4j聊天记忆存储怎么选?Redis、MySQL、MongoDB、向量库全方案对比与选型指南

LangChain4j聊天记忆存储架构选型指南&#xff1a;从Redis到向量库的深度对比 当构建基于LangChain4j的AI对话系统时&#xff0c;聊天记忆存储方案的选择直接影响着用户体验、系统性能和长期可扩展性。作为架构师&#xff0c;我们需要在内存缓存、关系型数据库、文档数据库和向…...

Java八股文大全(2026最新版)大厂面试题附答案详解

很多 Java 工程师的技术不错&#xff0c;但是一面试就头疼&#xff0c;10 次面试 9 次都是被刷&#xff0c;过的那次还是去了家不知名的小公司。 问题就在于&#xff1a;面试有技巧&#xff0c;而你不会把自己的能力表达给面试官。 应届生&#xff1a;你该如何准备简历&#…...

Qwen-Image-2512像素艺术生成实战:从提示词设计到风格控制全流程

Qwen-Image-2512像素艺术生成实战&#xff1a;从提示词设计到风格控制全流程 1. 像素艺术创作新选择 最近在尝试用AI生成像素艺术时&#xff0c;发现了一个特别有意思的组合&#xff1a;Qwen-Image-2512模型加上专门优化的Pixel Art LoRA。这个搭配能生成质量惊人的像素风格图…...

R语言机器学习驱动生态经济研究:从CEADs数据清洗、随机森林建模到因果推断全流程

在生态文明建设与“双碳”战略目标全面推进的当下&#xff0c;精准量化能源与环境领域的碳排放清单、深入挖掘驱动因子并预测未来趋势&#xff0c;已成为环境经济学、生态学及公共政策研究的核心命题。传统的统计学方法在面对海量异构数据、非线性复杂关系及多维评价体系时&…...

电化学信号区分算法开发

电化学相似信号区分算法 1. 问题定义与数据生成 import numpy as np import pandas as pd import matplotlib.pyplot as plt from scipy.signal import gaussian, convolve from sklearn.model_selection import train_test_split...