【大一C语言项目】Cjson的认识与实现(一)

一、初识json

参考网站
菜鸟教程:JSON
JSON介绍
JSON在线解析

JSON是什么

JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
JSON 是轻量级的文本数据交换格式
JSON 独立于语言:JSON 使用 Javascript语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。 目前非常多的动态(PHP,JSP,.NET)编程语言都支持JSON。
JSON 具有自我描述性,更易理解

关键词提取:独立,数据对象,易理解,文本数据交换格式,轻量级,JS对象表示法

二、JSON语法

下面程序片段源自菜鸟教程:JSON,自己进行修改调试

JSON的基础语法

数据书写格式

key:value
可以理解为key=value

value形式

数字(整数或浮点数)

{ "age":19 }

字符串(在双引号中)

"name" : "zsl"

逻辑值(true 或 false)

{ "is_student":true }

数组(在中括号中),可以包含多个对象

{"sites": [{ "name":"鱼竿钓鱼干" , "url":"https://blog.csdn.net/qq_39354847" }, { "name":"NEFU" , "url":"https://www.nefu.edu.cn/" }, ]
}

对象(在大括号中)

{ "name":"鱼竿钓鱼干" , "url":"https://blog.csdn.net/qq_39354847" }

null

{ "json":null }

更多的语法细节

对象

在{}中,可以包含多个键/值对,并用","来分隔

{ "name":"鱼竿钓鱼干" , "url":"https://blog.csdn.net/qq_39354847" }

访问值
可以用"."或者[]来访问对象里的值,有点像C语言里的结构体

var myObj, x;
myObj = { "name":"zsl", "age":19, "site":null };
x = myObj.name;var myObj, x;
myObj = { "name":"zsl", "age":19, "site":null };
x = myObj["age"];

循环对象

var myObj = { "name":"zsl", "age":19, "site":null };
for (x in myObj) {document.getElementById("demo").innerHTML += x + "<br>";/*好像是html或者js用来输出的*/
}

循环对象的值
通过[]来访问值,但是这里使用点号好像不可以?(不确定对不对)

var myObj = { "name":"zsl", "age":19, "site":null };
for (x in myObj) {document.getElementById("demo").innerHTML += myObj[x] + "<br>";/*好像是html或者js用来输出的*/
}

嵌套 JSON 对象

myObj = {"name":"zsl","age":19,"information": {"blog":"https://blog.csdn.net/qq_39354847","class":"2020-06","email":"851892190@qq.com"}
}

嵌套 JSON 对象的访问

x=myObj.information.blog

修改值
点号或者[]都可以

x=myObj.information.blog = "https://blog.csdn.net/qq_39354847/article/details/113782561";

删除对象属性

delete myObj.information.blog;

数组

数组和对象其实差不多,所以不弄很细了
数组:使用[];使用数组下标[]索引
对象:使用{};点号和[]索引

对象中嵌套数组,数组再嵌套数组

myObj = {"name":"网站","num":3,"sites": [{ "name":"Google", "info":[ "Android", "Google 搜索", "Google 翻译" ] },{ "name":"Runoob", "info":[ "菜鸟教程", "菜鸟工具", "菜鸟微信" ] },{ "name":"Taobao", "info":[ "淘宝", "网购" ] }]
}

利用循环输出上面的信息

for (i in myObj.sites) {x += "<h1>" + myObj.sites[i].name + "</h1>";for (j in myObj.sites[i].info) {x += myObj.sites[i].info[j] + "<br>";}
}

修改值与删除属性

myObj.sites[1] = "Github";
delete myObj.sites[1];

Tip:
delete 运算符并不是彻底删除元素,而是删除它的值,但仍会保留空间。
运算符 delete 只是将该值置为 undefined,而不会影响数组长度

三、项目目标

暂定目标
根据网上资料进行Cjson的编写,并实现对JSON语法的解析。
对JSON有初步了解和掌握,为未来相关课程学习做铺垫
熟悉网上已有Cjson项目,汲取其优点与编程思想
预期效果
在本地实现类似这个网站的JSON解析功能JSON在线解析

【大一C语言项目】Cjson的认识与实现(一)相关推荐

  1. JSON的C语言编解码器——cJSON和json-c

    http://blog.csdn.net/wadefelix/article/details/6965327 JSON是一种比XML更轻量级的数据交换格式,关于JSON的基础知识,参考 JSON ht ...

  2. 视频教程-C语言项目开发系列视频课程-C/C++

    C语言项目开发系列视频课程 从事编程数年,曾留学日本深造,擅长C++.后端.尤其是逆向 执教多年,顺应互联网的发展,从线下转为线上 用激情点燃代码,帮助大家实现编程梦想 杨波 ¥500.00 立即订阅 ...

  3. 大一C语言挣扎之路1(电子计算机概述和Visual Studio )

    大一C语言挣扎之路1(电子计算机概述和Visual Studio ) C语言 一 电子计算机概述 1. 计算机的诞生 2. 冯·诺依曼结构 功能 组成部件 计算机工作流程 3. 计算机的发展历史 4. ...

  4. 大一c语言大作业课题大全,昆明理工大学大一C语言大作业题目.doc

    昆明理工大学大一C语言大作业题目 综合性实践排序求平均值(包括将数拆散求最大最小值).函数ReadDat()随机产生100个存放到数组aa中00个jsSort()函数的功能是:进行降序排列.最后调用函 ...

  5. 深入体验c语言项目开发 光盘,深入体验C语言项目开发

    c语言是当今使用最为频繁的编程语言之一,一直在开发领域占据重要的地位.<深入体验C语言项目开发>通过10个综合实例的实现过程,详细讲解了c语言在实践项目中的综合运用过程.这些项目从作者的学 ...

  6. 上海大学c语言程序设计,【基础强化】2020-2021学年秋季学期程序设计C语言项目顺利开展...

    2020年10月19日下午12:10分,由上海大学社区学院课外培养中心主办的程序设计C语言项目在D415机房开展.本课程由邹启明老师担任主讲,为对编程感兴趣的同学提供了课外的学习机会与平台. 邹老师以 ...

  7. goland/go语言项目--本地包的导入(将项目添加至GOPATH中)(基于macOS)

    goland/go语言项目–本地包的导入(将项目添加至GOPATH中)(macOS) 1. 创建项目 首先,在桌面上创建一个文件夹G0Project,从而创建项目. //利用go mod进行初始化项目 ...

  8. [开源] C语言项目实战 - 虚拟鼠标 - VirtualMouse

    C语言项目实战 - 虚拟鼠标 - VirtualMouse 目录 关于软件 软件介绍 使用帮助 项目介绍 源码及软件下载 知识点扫描 热键的使用 鼠标事件的模拟 字体的选用 开机自启动的设置 为软件添 ...

  9. 如何使用visual studio 2017创建C语言项目

    使用visual studio 2017创建一个C语言项目,步骤如下: (1)打开Visual Studio 2017环境后出现欢迎界面,如图1所示. 图1  Visual Studio 2017欢迎 ...

最新文章

  1. 最新剑桥《AI全景报告》出炉:中国发表机器学习学术研究超过美国
  2. shiroConfig配置中要注意的事项
  3. sql server 2005 优化方法
  4. Jenkins插件之Deploy
  5. JS 数据处理技巧及小算法汇总(转载)
  6. 一篇文章搞定面试中的二叉树
  7. spring创建webservice项目
  8. 【总结】 Lucas定理
  9. Python MySQLdb的execute和executemany的使用
  10. 94. Binary Tree Inorder Traversal
  11. Okhttp之RouteSelector简单解析
  12. 新员工入职表_招人难,留人难!超市如何留住新员工
  13. 工业可视化三维建模数据3d可视化平台
  14. mybatis-plus中Constants.WRAPPER的导入包
  15. 旅行青蛙(旅かえる)的最全攻略(不懂日语的可以看看)
  16. 【MM VS价】移动平均价V标准价格S(一)
  17. dw中html文档命名标准,dw中的css是什么意思?
  18. Web Components使用(一)
  19. latex backmatter 是什么意思
  20. python基于模糊推理的智能家居安防系统设计

热门文章

  1. vue数组更新不渲染页面
  2. C语言中清空数组的方法(VS2013)
  3. “蓝桥杯”练习系统 BASIC-20 VIP试题 数的读法 | 数字转换拼音
  4. 布尔类型(boolean)在oracle存储过程中支持情况
  5. 无知和冷漠其实比蓄意更严重
  6. Dubbo 最佳实践
  7. 一篇文档掌握Jdk8中Javascript引擎Nashorn的使用方法
  8. 用html语句超链接锚点使用,HTML 锚点超链接
  9. [QLU Regular Contest 003] G.Youmu with greedy money problem //dp+滚动数组
  10. 不是每一朵花都有提前开放的理由