数组 读取json_JSON简介

9276565466fee85a0ab6a69cf3e0bc09.png

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使用技巧之虚拟串口功能
  • Jlink使用技巧之读取STM32内部的程序
  • Jlink使用技巧之J-Scope虚拟示波器功能
  • Jlink使用技巧之单独下载HEX文件到单片机
  • 百度智能手环方案开源(含源码,原理图,APP,通信协议等)
  • elf格式转换为hex格式文件的两种方法

欢迎大家关注我的个人博客

或微信扫码关注我的公众号

64b007c0160244c4c36124c1962e75cf.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值