JSON简介
最近自己在做一个基于ESP8266和STM32的桌面天气时钟,需要使用到JSON解析,所以系统学习一下JSON,这篇文章我们先来了解一下JSON的基本格式。
啥是JSON
JSON: JavaScript 对象表示法( JavaScript Object Notation) 是一种轻量级的数据交换格式。 它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式, 但是也使用了类似于C语言家族的习惯( 包括C、 C++、 C#、 Java、 JavaScript、 Perl、 Python等) 。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写, 同时也易于机器解析和生成(一般用于提升网络传输速率)。JSON 解析器和 JSON 库支持许多不同的编程语言。 JSON 文本格式在语法上与创建 JavaScript 对象的代码相同。 由于这种相似性, 无需解析器, JavaScript 程序能够使用内建的 eval() 函数, 用 JSON 数据来生成原生的 JavaScript 对象。JSON 是存储和交换文本信息的语法。 类似 XML。 JSON 比 XML 更小、 更快, 更易解析。JSON 具有自我描述性, 语法简洁, 易于理解。
JSON说白了,就是一串字符串只不过元素会使用特定的符号标注,很多API接口的返回信息都是JSON格式的。
{} 双括号表示对象。
"" 双引号内是属性或值。
: 冒号表示后者是前者的值(这个值可以是字符串、数字、也可以是另一个josn数组或json对象)
[] 中括号表示数组,可以包含多个JSON对象
所以 {"name": "Michael"} 可以理解为是一个json对象,它包含了一个键值对,对象也可以包含多个键/值对。
一个简单的JSON对象
{ "name": "Andy", "age": 20 }
这个JSON对象包含两个键值对。
一个简单的JSON数组
[{ "name": "Michael" }, { "name": "Jerry" }]
包含了两个JSON对象的JSON数组。
一个稍微复杂点的JSON对象
{ "success": "1", "result": { "timestamp": "1542456793", "datetime_1": "2018-11-17 20:13:13", "datetime_2": "2018年11月17日 20时13分13秒", "week_1": "6", "week_2": "星期六", "week_3": "周六", "week_4": "Saturday" } }
这是一个免费的用来获取北京标准时间的API接口地址,返回值是JSON字符串。这个JSON对象共包含两个键值对,一个键success,对应的值是一个字符串,另一个键result,对应的值是一个JSON对象。所以可以看出,键的值,可以是字符串,数字,也可以是另一个JSON对象或JSON数组。
一个很复杂的JSON字符串
{ "results": [{ "location": { "id": "WS10730EM8EV", "name": "深圳", "country": "CN", "path": "深圳,深圳,广东,中国", "timezone": "Asia/Shanghai", "timezone_offset": "+08:00" }, "now": { "text": "多云", "code": "4", "temperature": "23" }, "last_update": "2018-11-17T20:05:00+08:00" }] }
这是心知天气获取3天天气预报返回的JSON格式信息。就包含了一个键值对,键是results
,值是一个数组。
下一篇文章将介绍如何使用cJSON库,来完成JSON的解析,来得到我们想要的值。
在线JSON格式校验工具:bejson
常用的API数据接口:k780数据
免费的API接口:各类无次数限制的免费API接口
历史精选文章:
- Jlink使用技巧之读取STM32内部的程序
- Jlink使用技巧之单独下载HEX文件到单片机
- Jlink使用技巧之J-Scope虚拟示波器功能
- 百度智能手环方案开源(含源码,原理图,APP,通信协议等)
- 如何在Keil-MDK开发环境生成Bin格式文件
- elf格式转换为hex格式文件的两种方法
- 两个HC-05蓝牙模块互相绑定构成无线串口模块
- STM32实战应用(一)——1602蓝牙时钟1液晶的显示测试
- 单片机之模块化编程
- 单片机课程设计——《基于AT89S52单片机和DS1302时钟芯片的电子时钟(可蓝牙校准)》
- 个人博客添加网易云音乐Flash插件
- 两行代码搞定博客访问量统计
欢迎大家关注我的个人博客
或微信扫码关注我的公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
面试 Java 高级后端开发,要准备哪些知识点?
由于我做了比较长时间的技术面试官,根据我的面试体会,不少同学收到面试后,什么准备也不会做,到时候就来了。 这样做的后果是:不知彼,不知己,每战必殆。哪怕侥幸面试成,工资一定会被压得很低。 其实公司肯花时间让你去面试,前提条件一定是通过你的简历,一定发现了你和公司的匹配点,也就是说,一定是有录用意向的。 在技术面试的时间段里(最长1个小时),你如果能展现你的优势那是最好的,但如果你做不到这点,简单点,让面试官感觉你达到了最低标准即可。这好比在大学里考试,有些同学对某门课的知识点完全不懂,但也有可能通过考前突击和刷题来通过考试(不作弊),而且还有可能考高分。 至于通过技术面试后,项目经理或人事的面试一般是过滤特别差的,比如考察些团队协作能力和沟通表达能力等,这对大家来说应该不是问题。所以在本文里,就以Java后端高级开发为例,讲述下面试的准备点。方法是通用的,其它方向的同学也可以以此类推。 一、至少定出2天的准备时间 面试的准备时间一般别低于2天,如果可以,再延长些,但别太长。 比如是去现场面试,可以找的借口就比较多,比如项目忙,会多,时间间隔别超过5个工作日。比如周二收到通知,就尽量约到...
- 下一篇
Eclipse 中的乱码问题
1、重新安装eclipse,未设置编码问题,导致乱码2、编码设置可以在新建项目时设置,也可以在workspace中设置3、servlet中未设置编码格式,导致的乱码 request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); 4、jdbc连接中的乱码问题 public String JDBC_URL = "jdbc:mysql://localhost:3306/mi_shop_store?characterEncoding=UTF-8"; 此时需要加上true& public String JDBC_URL = "jdbc:mysql://localhost:3306/mi_shop_store?true&characterEncoding=UTF-8";
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Mario游戏-低调大师作品
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7安装Docker,走上虚拟化容器引擎之路