jquery取json数组的值_json其实不难,只需了解一点,就能轻松玩转它

工作过程中,经常需要使用json这种轻量级的数据交换格式,例如,通过它可以组织数据保存到配置文件,客户端和服务端通过json格式来进行通信等,但是,针对特定的需求场景,需要设计怎样的json格式比较合适呢,json到底可以支持多少种格式呢,有没有一种简单的概括,就能让使用者轻松使用它呢!

一般知识都有基本的理论结构,所以,本文首先将说明json的基本知识点,然后基于开源软件jsoncpp来说明如何构建/读写json, 再分享个人的使用心得,最后再总结json的关键要点,理解了这一点,玩转json不是问题。

一、Json简介

Json是轻量级的数据交换格式,它便于阅读和编写,它是完全独立于程序语言的文本格式。

二、Json结构

Json有两个结构, 分别是“名称/值”对的集合和值的有序列表。“名称/值”对的集合可以简单理解为对象集合,而值的有序列表可以理解为数组。

25caf0cfe19701e0dbf7b23fc714f7e4.png

这里举一个“名称/值”对的集合的例子,它是以左大括号开始,以右大括号结束,中间是由多个“名称/值”对组成,各个“名称/值”对之间用逗号隔开。

db49a80e92360b09ba40457934a63799.png

举一个“值的有序列表”的例子,它是以左中括号开始,以右中括号结束,中间是由多个值组成,各个值之间用逗号隔开。

f5ce30c8eff69314f3e319a350902d7e.png

三、Json形式

Json主要由三种形式,分别为对象(object), 数组(array), 值(value)。

对象(object)是“名称/值”对集合,名称与值之间通过冒号隔开,另外对象是以左大括号开始,以右大括号结束。

c759d26fc312fb4885022bcfc87fa6e2.png

数组(array)是值的有序集合,它是以左中括号开始,以右中括号结束。

8727403524d9b8ba25a3a75818074797.png

值(value)可以是字符串(string)、数值(number)、对象(object)、数组(array)、true、false、null。这里我们会发现对象(object)里面有值(value), 数组(array)里面也有值(value), 而值(value)又包含有对象和数组,所以它们是可以嵌套的。

5d8521e8e5582834ae5b60e4c5d172a5.png

Json就是由上面简单的元素来组建复杂的信息元素。

四、Json例子

jsoncpp是C++语言编写的开源json库,通过该库,我们可以很容易的构建、读写json。接下来就基于jsoncpp来实现几个构建、读取json的例子。通过例子可以对json有更深的理解。jsoncpp最基本的对象就是Json::Value。

构建一个最简单的对象,然后输出整个json信息,最后读取json值,先调用isMember判断名称是否为root成员,如果是的话,那么就读取输出。

54a449263195b71646004e3cff3b4472.png

输出的日志信息如下所示,大括号包含了一个“名称/值”对。

fa1bc640e8be116deb73679e3ac12e05.png

构建嵌套对象,第一个“名称/值”对中的“值”又是一个对象。

5480543edab7d2ea8a3c60ca00c54943.png

输出的日志信息如下所示

24812fdf4d3da945f5e2e907ff97879d.png

构建三层嵌套对象,第一个“名称/值”对中的“值”是一个对象,而该对象的“值”又是一个对象。依次类推,可以构建更多层的嵌套对象。

bd09ed5427970aec19d12dc44931ecc9.png

输出的日志信息如下所示

44fc989a945fc5dc2ca36bfe9219f9a9.png

构建简单的数组,jsoncpp中构建数组是通过append的接口来创建的。读取数组之前,先调用isArray来判断对象是否为数组,如果是的话,再读取输出。这里需要注意数组的个数。从防御式编程的角度看,读取数组值之前,需要判断数组索引是否在有效范围内。

17dc259c981039130e355939ae151780.png

输出的日志信息如下所示,从这里我们也可以确定数组是可以单独作为独立json串出现的。之前一直都有一个误区,就是认为json一定要用大括号包括起来。

27bdfaa4a2f5ff70ac4ea585a0c2791b.png

构建对象和数组组成的json。首先创建一个数组,然后将其作为对象的值

647acfbdc567bb9112f4b38e07b833ac.png

输出的日志信息如下所示

7a2ec498d6d2c457542479141eec18a1.png

最后再构建稍微复杂一点的json串,它是由对象、数组、对象来组成的,即对象的值是一个数组,而数组内部的值是由对象组成。

c9aa7bd77d5b5306bf70af49c29fc7e1.png

输出的日志信息如下所示

bcfc691eb40a6900a9713aabc9137e02.png

五、使用心得

  1. 读取json值之前,先判断其有效性,可以结合断言机制,调用isMember或者isArray来进行判断。
  2. 使用数组的时候,需要特别注意数组下标。

六、总结

json主要是由对象或数组创建而成,而它们的嵌套使用就可以创建复杂的json串,根据特定场景的需求来创建适用的json格式。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值