在工作过程中,经常需要使用json这种轻量级的数据交换格式。例如,它可以组织数据保存到配置文件中,客户端和服务器可以通过json格式相互通信。但是,针对具体的需求场景,设计什么样的json格式比较合适呢?json可以支持多少种格式?有没有简单的总结可以让用户轻松使用?
一般来说,知识有一个基本的理论结构。因此,本文将首先讲解json的基础知识点,然后讲解如何基于开源软件jsoncpp构建/读取json,再分享个人经验。最后总结一下json的要点,明白这一点。玩json不是问题。
Json简介
Json是一种轻量级的数据交换格式,易于读写。它是一种完全独立于编程语言的文本格式。
二、Json结构
Json有两种结构,即一组“名称/值”对和一个有序的值列表。“名称/值”对的***可以简单地理解为对象的***,而值的有序列表可以理解为数组。
下面是一组“名称/值”对的示例。它以左括号开始,以右括号结束。中间由多个“名称/值”对组成,每对之间用逗号分隔。
以“有序值列表”为例,它以左括号开始,以右括号结束。中间由多个值组成,每个值之间用逗号分隔。
三。Json表单
Json主要由三种形式组成,即对象、数组和值。
对象是一组“名称/值”对,名称和值用冒号分隔。此外,对象以左括号开始,以右括号结束。
Array是一组有序的值,以左括号开始,以右括号结束。
Value可以是字符串(string)、数值(number)、对象(object)、数组(array)、true、false、null。这里我们会发现对象和数组中都有值,值包含对象和数组,所以可以嵌套。
Json由上面的简单元素组成复杂的信息元素。
四。Json示例
CPP是用C++语言编写的开源json库。通过这个库,我们可以轻松地构建、读取和编写json。接下来,我们将基于jsoncpp实现几个构建和读取json的例子。我们可以通过例子对json有更深入的了解。CPP最基本的对象是Json::Value。
构建一个最简单的对象,然后输出整个json信息,最后读取json值。首先调用isMember来确定该名称是否是根成员,如果是,则读取输出。
的输出日志信息如下所示,花括号中包含一个“名称/值”对。
构建嵌套对象,第一个“名称/值”对中的“值”是另一个对象。
的输出日志信息如下
构建一个三层嵌套对象,第一个“名称/值”对中的“值”是一个对象,这个对象的“值”是另一个对象。反过来,您可以构建更多层的嵌套对象。
的输出日志信息如下
构建一个简单的数组。jsoncpp中构建的数组是通过append的接口创建的。在读取数组之前,调用isArray来确定对象是否是数组,如果是,则读取输出。注意这里的数组个数。从防御性编程的角度来看,在读取数组值之前,需要确定数组索引是否在有效范围内。
的输出日志信息如下所示,从中我们也可以确定数组可以单独作为独立的json字符串出现。一直有一个误解,json必须包含在花括号里。
构建由对象和数组组成的json。首先创建一个数组,然后用它作为对象的值。
的输出日志信息如下
最后构造一个稍微复杂一点的json字符串,由对象、数组和对象组成,即对象的值是一个数组,而数组内部的值是由对象组成的。
的输出日志信息如下
五、经验的运用
读取json值之前,先判断其有效性,可以结合断言机制,调用isMember或者isArray来进行判断。使用数组的时候,需要特别注意数组下标。
不及物动词摘要
Json主要由对象或数组创建,它们的嵌套使用可以创建复杂的json字符串,并根据具体场景的需要创建合适的json格式。
本文来自安安分分做我自我投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/576516.html