一、c语言获取json中的数据。

1、先要有cJOSN库,两个文件分别是cJSON.c和cJSON.h。

2、感性认识

char * json = "{ \"json\" : { \"id\":1, \"nodeId\":11, \"deviceId\":111, \"deviceName\":\"aaa\", \"ieee\":\"01212\", \"ep\":\"1111\", \"type\":\"bbb\" }}";

char * json1 = "{\"id\":1, \"nodeId\":11, \"deviceId\":111, \"deviceName\":\"aaa\"}";

cJSON * root;

cJSON * format;

int value_int;

char * value_string;

root = cJSON_Parse(json);

format = cJSON_GetObjectItem(root,"json");

value_int = cJSON_GetObjectItem(format,"nodeId")->valueint;

value_string = cJSON_GetObjectItem(format,"ieee")->valuestring;

printf( "%d\n", value_int );

printf( "%s\n", value_string );

cJSON_Delete(root);

root = cJSON_Parse(json1);

value_int = cJSON_GetObjectItem(root,"id")->valueint;

value_string = cJSON_GetObjectItem(root,"deviceName")->valuestring;

printf( "%d\n", value_int );

printf( "%s\n", value_string );

cJSON_Delete(root);

结果:

11

01212

1

aaa

二、cJSON库

1、json的数据结构

c语言中json数据是采用链表存储的

typedef struct cJSON {

struct cJSON *next,*prev;// 数组 对象数据中用到

struct cJSON *child;// 数组 和对象中指向子数组对象或值

int type;// 元素的类型,如是对象还是数组

char *valuestring;// 如果是字符串

int valueint; // 如果是数值

double valuedouble;// 如果类型是cJSON_Number

char *string;// The item's name string, if this item is the child of, or is in the list of subitems of an object.

} cJSON;

三、cJSON使用

{

"name": "Jack (\"Bee\") Nimble",

"format": {

"type":       "rect",

"width":      1920,

"height":     1080,

"interlace":  false,

"frame rate": 24

}

}

"name": "Jack (\"Bee\") Nimble",

"format": {

"type":       "rect",

"width":      1920,

"height":     1080,

"interlace":  false,

"frame rate": 24

}

}

1、字符串解析成json结构体

1):讲字符串解析成json结构体。

cJSON *root = cJSON_Parse(my_json_string);

2):获取某个元素

cJSON *format = cJSON_GetObjectItem(root,"format");

int framerate = cJSON_GetObjectItem(format,"frame rate")->valueint;

int framerate = cJSON_GetObjectItem(format,"frame rate")->valueint;

3):讲json结构体转换成字符串

char *rendered=cJSON_Print(root);

4):删除

cJSON_Delete(root);

2:构建一个json结构体

cJSON *root,*fmt;

root=cJSON_CreateObject();

cJSON_AddItemToObject(root, "name", cJSON_CreateString("Jack (\"Bee\") Nimble"));

cJSON_AddItemToObject(root, "format", fmt=cJSON_CreateObject());

cJSON_AddStringToObject(fmt,"type",     "rect");

cJSON_AddNumberToObject(fmt,"width",        1920);

cJSON_AddNumberToObject(fmt,"height",       1080);

cJSON_AddFalseToObject (fmt,"interlace");

cJSON_AddNumberToObject(fmt,"frame rate",   24)

out =cJSON_Print(root);

printf("%s\n",out);

cJSON_Delete(root);

free(out);

C语言cJSON库的使用,解析json数据格式

C语言cJSON库的使用,解析json数据格式 摘自:https://www.cnblogs.com/piaoyang/p/9274925.html 对于c语言来说是没有字典这样的结构的,所以对于解析 ...

Python3基础 json.loads 解析json格式的数据,得到一个字典

Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

JSON.parse 解析json字符串时,遇换行符报错

Json字符串转换成Json对象时候,有两种方式: 假设d是json字符串: 1,eval('(' + d + ')'). 2,JSON.parse(d): 但是以上方式有隐患,如果Json字符串有换 ...

C#使用Json.NET解析Json

本文转载自 http://xiaosheng.me/2016/10/01/article25/ 最近在 C# 项目中需要使用到 Json 格式的数据,我简单上网搜索了一下,基本上有两种操作 Json ...

Android原生生成JSON与解析JSON

JSON数据是一种轻量级的数据交换格式,在Android中通常应用于client与server交互之间的传输数据.像如今在网上有非常多解析JSON数据的jar包,可是归根究竟用的都是Android原生 ...

scala解析json —— json4s 解析json方法汇总

使用json4s的框架,包括spark,flink 1.org.json4s 引入pom的方法 对于本地支持,引入以下依赖项添加到pom中

JSON.parse 解析json字符串时,遇字符串换行符,解析失败

今天遇到json字符串转对象时报错了,发现有个字符串有换行符,仔细找了原因. 结果是因为JSON.parse转json字符串时遇到一些特殊字符需要先转义,如图所示 然后尝试了各路大神介绍的办法,均不适 ...

c# json数据解析——将字符串json格式数据转换成对象

网络中数据传输经常是xml或者json,现在做的一个项目之前调其他系统接口都是返回的xml格式,刚刚遇到一个返回json格式数据的接口,通过例子由易到难总结一下处理过程,希望能帮到和我一样开始不会的朋 ...

随机推荐

Maxwell’s Equations

A=cos(pi*x-pi/2)i+sin(pi*x)j 正电荷形成的电场 负电荷形成的电场   正负电荷形成的电场 无限长导线上均匀分布的正电荷 电场 均匀分布电荷的平面 电场 电荷均匀分布的球面形 ...

iOS 中的XML解析代码(SAX)

1.XML解析(SAX) NSXMLParser SAX 大文件 1)打开文档 - (void)parserDidStartDocument:(NSXMLParser *)parser 2)开始查找起 ...

Poj2002 Squares

题意描述:有一堆平面散点集,任取四个点,求能组成正方形的不同组合方式有多少.相同的四个点,不同顺序构成的正方形视为同一正方形. 思路变迁: 1.最简单的方法,直接暴力搜索,即依次取四个顶点,根据其坐标 ...

win10 系统输入法与 idea的 ctr+shift+f 快捷键冲突,解决办法

我认为首先是输入法简繁热键的冲突,(当然也有人认为是qq的热键冲突,) 解决办法: 1.首先打开搜狗输入法的设置(当然有的可能不是搜狗输入法,其他的输入法设置步骤都是大同小异) 看到了吗,就是这个热键 ...

TensorFlow中的通信机制——Rendezvous(一)本地传输

背景 [作者:DeepLearningStack,阿里巴巴算法工程师,开源TensorFlow Contributor] 在TensorFlow源码中我们经常能看到一个奇怪的词——Rendezvous ...

设置防火强开机自启,以及没有成功的tomcat开机自启

防火墙 如果你的系统上没有安装使用命令安装 #yum install firewalld //安装firewalld 防火墙 开启服务 # systemctl start firewalld.serv ...

51Nod 部分题目 の 口胡&一句话题解

原文链接https://www.cnblogs.com/zhouzhendong/p/51Nod-One-Sentence.html 51Nod1404 先列出式子,然后搞成一个组合数.然后 luca ...

Web.config配置customErrors mode为Off后依然不显示具体错误的可能原因。

有时候我们的网站程序在本地运行没有问题,但在上传到远程服务器后则报错.这就需要我们了解具体错误,但IIS默认只显示统一的运行时错误,想要知道具体错误就需要配置Web.config中customErro ...

(转)理解classloader

ClassLoader翻译过来就是类加载器,普通的Java开发者其实用到的不多,但对于某些框架开发者来说却非常常见.理解ClassLoader的加载机制,也有利于我们编写出更高效的代码.ClassLo ...

查看linux系统硬盘目录占用大小

http://jingyan.baidu.com/article/3aed632e198ae870108091b4.html   du -sh /* 先看看根目录下面 du -sh /usr/* du ...

cjson构建_[置顶] cJSON库(构建json与解析json字符串)-c语言相关推荐

  1. python中json模块_Python使用内置json模块解析json格式数据的方法

    本文实例讲述了Python使用内置json模块解析json格式数据的方法.分享给大家供大家参考,具体如下: Python中解析json字符串非常简单,直接用内置的json模块就可以,不需要安装额外的模 ...

  2. 语音库构建_在10分钟内构建一个多功能语音助手

    语音库构建 Nowadays people don't have time to manually search the internet for information or the answers ...

  3. C语言cJSON库的使用,解析json数据格式

    对于c语言来说是没有字典这样的结构的,所以对于解析json格式的数据来说不是那么好解析,但是有些时候又会需要处理这样的数据格式,这里就有一个解析json的函数库可以给我们使用了.这个函数库就是cJSO ...

  4. cjson 对象是json数组型结构体_C语言cJSON库的使用,解析json数据格式

    对于c语言来说是没有字典这样的结构的,所以对于解析json格式的数据来说不是那么好解析,但是有些时候又会需要处理这样的数据格式,这里就有一个解析json的函数库可以给我们使用了.这个函数库就是cJSO ...

  5. gradle构建_如何提高Gradle的构建速度?

    gradle构建 In this tutorial we'll look at things that can be done with the Gradle build to speed up th ...

  6. setwindowpos怎么改变z序_置顶窗口SetWindowPos()的用法

    置顶窗口 SetWindowPos() 的用法 SetWindowPos () 函数功能:该函数改变一个子窗口,弹出式窗口式 顶层窗口的尺寸,位置和 Z 序.子窗口,弹出式窗口,及顶 层窗口根据它们在 ...

  7. docker容器构建_我如何容器化构建系统

    docker容器构建 构建系统由用于从源代码过渡到正在运行的应用程序的工具和过程组成. 这种过渡还涉及将代码的读者从软件开发人员更改为最终用户,无论最终用户是运营方面的同事还是部署系统的同事. 在使用 ...

  8. [置顶]一步步构建大型网站架构

    之前我简单向大家介绍了各个知名大型网站的架构,亿万用户网站MySpace的成功秘密.Flickr架构.YouTube网站架构.PlentyOfFish 网站架构学习.WikiPedia技术架构学习笔记 ...

  9. 大数据平台构建_如何像产品一样构建数据平台

    大数据平台构建 重点 (Top highlight) Over the past few years, many companies have embraced data platforms as a ...

最新文章

  1. Java过滤器与SpringMVC拦截器之间的关系与区别
  2. 公司为何要对薪水保密?
  3. 如何自学python到做项目-如何使用python进行第一个机器学习项目(详细教程篇)...
  4. 自学python可以找到好的工作吗-27岁0基础自学Python,多久可以找到工作?
  5. 在Windows95/98中实现苹果窗口界面
  6. java盘点系统_2020年度综合大盘点:火爆IT业的7大Java技术,任何一项都是“卧槽牛逼”!...
  7. 英文怎么读_数学公式的英文读法
  8. 如何理解概率论中的“矩”?
  9. 一阶电路实验报告心得_电路实验心得体会范文3篇
  10. SI4703-C19-GMR音频调谐器2频段3 X 3 MM QFN-20
  11. 新西兰访问学者的签证材料
  12. Python实现阳历转农历功能
  13. 从零开始学WEB前端——JavaScript流程控制语句
  14. 免费在线loading生成。
  15. SQL Server 2014安装教程(保姆级图解教程)
  16. 靳氏DIV布局兼容“武林秘诀”
  17. 如何将Java代码导出变为可执行jar文件
  18. NDD(notepad--)的AI机器人插件制作过程
  19. 实验十二 百度地图 定位
  20. C# 支付宝接口在线收款退款

热门文章

  1. 03-树3 Tree Traversals Again(树的遍历)
  2. 《巴菲特之道 (第三版)》读书笔记
  3. 小型文件系统FatFS和LittleFS对比和区别
  4. 【程序员如何买基金 七】筛选优秀的主动基金
  5. 注意,2023年《Nature》将新增3本子刊
  6. Django建立一个音乐网站(四)
  7. 单片机怎么入门,发展前景如何?
  8. 【个人随笔】被跳蚤咬了,或者被虫子咬了之后很痒,解决办法!!
  9. Nginx支持PHP的PATHINFO模式配置深入分析
  10. 去黄褐斑的方法用什么呢