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

【大一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在线解析

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值