首页 > 其他分享 >【大一C语言项目】Cjson的认识与实现(一)

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

时间:2022-11-25 21:32:52浏览次数:61  
标签:name Cjson sites C语言 blog 对象 JSON 大一 myObj


【大一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":"[email protected]"
}
}

嵌套 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在线解析​


标签:name,Cjson,sites,C语言,blog,对象,JSON,大一,myObj
From: https://blog.51cto.com/u_15891800/5887778

相关文章

  • 【大一C语言项目】Cjson的认识与实现(二)
    【大一C语言项目】Cjson的认识与实现(二)参考资料:​​​哔哩哔哩CJson开源库使用及注意事项​​​​CJson开源项目下载地址​​​​cJSON源码刨析​​一、使用Cjson库下载CJSO......
  • [NEFU ACM大一暑假集训 解题报告]字典树
    [NEFUACM大一暑假集训解题报告]字典树题目A-L语言多模式匹配,AC自动机建立Trie图。不过这个题数据量很小,貌似可以暴力建立跳转关系,加上标记处理即可。对于样例的AC自动......
  • [NEFU ACM大一暑假集训 解题报告]前缀和与差分
    [NEFUACM大一暑假集训解题报告]前缀和与差分题量略大,所以解题报告和fjy大佬分了一下工由我负责A-K部分题解(不是AK部分题解啊,哈哈)后半部分题解(LM+R~V+XYZ)由fjy大佬发布......
  • [NEFU ACM大一暑假集训 解题报告]尺取法
    [NEFUACM大一暑假集训解题报告]尺取法前四题为例题,学长讲过了,直接贴代码了。题谱题目A-Subsequence求总和>=s的最短区间#include<cstdio>#include<cstdlib>#include<cma......
  • C语言基础
    (1)栈(stack):由编译器进行管理,自动分配和释放,存放函数调用过程中的各种参数、局部变量、返回值以及函数返回地址。操作方式类似数据结构中的栈。(2)堆(heap):用于程序动态申请分配......
  • [Object-C语言随笔之一]Mac os 下搭建iOS开发环境
    ​​ 李华明Himi ​​​原创,转载务必在明显处注明 从这一章开始,Himi将一步一步的带大家走进Iphone4的开发,当然开发语言则不再是Java,而是Objective-C,简单来说是C的变种......
  • [Object-C语言随笔之四]创建视图并绘制简单图形
    ​​ 李华明Himi ​​​原创,转载务必在明显处注明这段时间N忙,没办法,创业公司,当然抽时间也仍然再自学ios~OK,基础的语言基础,我就不多说了,从今天开始直接写游戏开发部分......
  • C语言 | 三子棋游戏
    C语言实现《三子棋》小游戏1-需求分析1️⃣游戏规则介绍:双方轮流下子,直到三个子连成一条线,横、竖、斜线都可以,谁先达到这个要求就获胜,或者说棋盘满了,则游戏平局结束[1]......
  • 喝汽水--C语言
    问题:喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水?分析:1.20元肯定可以喝20瓶2.2个空瓶可以换一瓶汽水,则剩下瓶子数量:empty/2+empty%2empty/2:表示成功换汽水的......
  • [c语言基础]如何判断素数
    素数又称质数。所谓素数是指除了1和它本身以外,不能被任何整数整除的数,例如17就是素数,因为它不能被2~16的任一整数整除。思路1:因此判断一个整数m是否是素数,只需把m被......