什么是json如何理解json这种数据格式,个人详解桃小夭

从百科解释,我们可以得出简化的定义:json是一种数据格式,json是一种格式,而不是一种数据。

我在初学javascript的时候,接触到json的时候一直觉得很绕,因为总是听到有人说传递“json数据,json数据”,如果是数据的话就一定有数据类型,就下意识认定json是一种javascript的数据类型,但js中找不到这种数据的类型。

后来,大致总结了三种说法,

1、传递“ json数据,json数据”,

2、传递“ json格式的数据 ”,

3、传递“ json格式的 字符串”,

我认为刚开始理解的时候,用第三种说法解释起来更好理解一些,

我们平常在js中说的json数据,实际上在发送和接收的时候都只是一个字符串而已,只不过这个字符串的样子带有一定规则,它遵循json这种格式。

要想不那么绕,只要记住 json数据 = json字符串

json数据(json字符串)究竟长什么样,让我们来举个栗子:

1、第一种是类似于 对象数组 格式的字符串(每个元素是对象,可以称为json数组):

​ String json_arr_str = '[{"a":123},{"b":123}]', //里面的双引号是必须的,用\转义

2、第二种是类似于 对象 的字符串(每个元素是键值对,可以称为json对象):

​ String json_obj_str = '{"a":123,"b":"xzt"}',//里面的双引号是必须的,用\转义

3、第三种是基于前两种格式互相嵌套的字符串,只要每一层的数据都符合上面的两种的各一种,理论上嵌套多少层都没问题

json是什么,以及json数据我们也见过了。那么

一般前后端传递都是直接传的字符串,开始我们获取数据只是一个字符串而已,而字符串若包含的很多信息,不是收到就能直接用的,如何将字符串中包含的的数据有规律提取出来也是个问题。

每个编程语言都有自己的语法,但字符串类的数据都是编程语言必有的,所以json格式数据的适用范围很广。我们现在用的编程语言几乎是面向对象的,以对象为数据的载体,操作数据都围绕着对象来展开,而不是直接操作字符串。

试想一下,数据的传递都是很频繁的,若需要自己写方法反复操作字符串岂不是很不方便?若是没有规定传递数据的格式,总不能每次接收到字符串数据,都自己去做切片操作把数据切出来吧。万一这次传的数据格式与上次不一样,那么我上一次写的解析代码不能用,还得针对数据再写一次方法。

恰好,我们定义的json格式的字符串数据,格式就是固定的,很好的解决了困扰之一。因为json数据格式,实际上只有上面说的两种情况,用编程语言实现了对json字符串的这些操作其实不难,而且都是可以重复使用的。

小结一下:数据传递是以字符串的方式来传递的,若是要方便的获取里面的信息,就得约定好字符串数据的格式,不然每次传出递数据没啥,但解析数据就得乱套。以json这种格式传递的数据,就是这样一个带有约定规则的字符串,对接收者来说解析其中数据很方便。

现在一些编程语言已经内置了方法实现了,可以将 json字符串,语言对象 二者相互转化。例如javascript,php语言等。(具体方法不举例,搜索就有)

再试想一下,若是有个内置方法可以让你解析json数据成该编程语言的对象,那么你就可以用这种语言访问对象的方式,很方便的去访问对象里面的各种属性。就省去了很多麻烦。

而有些编程语言即使没有内置的json字符串,语言对象 二者互相转化的方法。但网上已经有开发者写好的现成的方法可以使用。

例如java就有一些工具包。其中之一例如阿里巴巴自己开发的fastjson这个jar包,引用里面的方法,可以很方便的对

json字符串,json数组, json对象, javaBean对象四者的相互转化。

上面提到的就只有json字符串,和语言对象这两种数据的转化,但这里为什么多了json数组和json对象这两个名词呢,其实json数组,json对象他们本质上就是json字符串,因为他们符合上面我写的三点json语法的前两点。

为什么还要多余的分出来呢?很难说具体的原因,也许是开发者为了给我们更多的选择,我在使用的时候就感觉到,将json字符串转化成java对象的时候,还得自己写个跟json字符串的数据相匹配格式的类对象,然后再用对象访问某个属性,就很麻烦。但是json字符串直接转化成json数组,或json对象之后,里面还有配套的方法可以直接转化成json数组,json对象的方法。这样是不是更方便些?

再说说json对象与对象的区别吧,二者都有对象二字,是不是感觉自己都快分不清了

举个栗子对比一下:

json对象: String json_obj_str = '{"a":123,"b","321"}'

js对象: let js_obj = {a:123,b:"321"}

可以看到,二者是很有区别的。

json对象首先是字符串,它遵循字符串的操作规则,并且里面的key是有双引号的。

而js对象首先它是js语言的对象,它则遵循的js本身语言的操作规则。

同理json数组与编程语言中的数组也是一样的。

再说一下为什么百度百科说json是一种“轻量级”数据格式,做个对比吧,比如xml数据,同为文本格式的内容,xml数据每个数据都有标签套在外面,而json数据只需要外面加个 []或者{},里面的数据用,隔开,键和值中间只要一个:隔开就行。要是数据庞大的话,无论怎么说,几个简单的符号都比一堆标签更简单,占内存更小。

THE END
0.JSON格式详解json格式随着互联网的发展和各种Web 应用程序的普及,数据交换已经成为了我们日常开发中的重要环节。而在各种数据交换格式中,JSON(JavaScriptObject Notation)作为一种轻量级的数据交换格式,以其简洁、易于阅读和解析的特性,得到了广泛应用。本文将对JSON 格式进行详细介绍,帮助大家更好地理解和使用它。 jvzquC41dnuh0lxfp0tfv8r2a9:53;9581gsvrhng1jfvjnnu1753A:824>
1.一文搞懂JSONJSON格式规范(重点) JSON的基本操作 关键接口的梳理 序列化 反序列化 答案和解析 序列化答案 反序列化答案 第一种思路 第二种思路 什么是JSON? JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于将数据结构化地传输和存储。它由键值对组成,采用类似于JavaScript对象的格式来表示数据。JSON易于阅读jvzquC41dnuh0lxfp0tfv8|gkzooa=7574=998ftvkimg8igvcomu86536:52>7
2.简单易懂的JSON入门在上边这个例子中,name可加单引号,也可加双引号,甚至可以什么都不加。而右边的值必须是一个实实在在的东西,比如字符串,或者一个对象,甚至是一个函数。我们不考虑JS内部的对象机制,只是简单地说明一下,是有这么个事情的。这就是所谓的JSON对象,也就是js对象。在JavaScript中,对象是键值对的集合,符合JSON格式。jvzquC41fg|fnxugt0gmk‚zp0eun1jwvkerf1:726961
3.上手python之json数据格式json有什么用 各种编程语言存储数据的容器不尽相同,在Python中有字典dict这样的数据类型, 而其它语言可能没有对应的字典。 为了让不同的语言都能够相互通用的互相传递数据,JSON就是一种非常良好的中转数据格式。如下图,以Python和C语言互传数据为例: json格式数据转化 jvzquC41fg|fnxugt0gmk‚zp0eun1jwvkerf1:66;5?3
4.什么是json格式什么是json格式 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于将数据从一个应用程序传输到另一个应用程序。它基于JavaScript语法,但可以被多种编程语言解析和生成。 JSON使用键值对的形式来表示数据,其中键是字符串,值可以是字符串、数字、布尔值、数组、对象或null。数据之间使用逗号分隔,键值对jvzq<84yyy4nqknngvxbkw3qti5bdxzv1DHT1:754:7/j}rn
5.JSON格式说明json格式JSON 格式说明 文章目录 一、关于 JSON 二、JSON 常见格式 1、对象 2、数组 3、值 4、字符串 5、数值 6、空白 三、各语言对 Json 的支持 官网:https://www.json.org/json-en.html(本文翻译自此) 一、关于JSON JSON(JavaScriptObject Notation)是一种轻量级的数据交换格式。人类读写很容易。机器很容易解析jvzquC41dnuh0lxfp0tfv8qqxgiitrx221gsvrhng1jfvjnnu174;<8397<
6.深入理解JSON:格式转换与常用方法,JSON只要涉及到字符串就必须使用双引号,不支持undefined (三)、数组形式 JSON的数组形式对应着JS中的数组形式 注意事项: 数组中的字符串必须使用双引号 JSON中只要涉及到字符串 就必须使用双引号 不支持undefined 四、JSON的常用方法 JSON.parse():可以将JSON格式的字符串解析成JS中对应的值, 一定要是合法的字符串否则会报错 JSON.stringify():可以将JS中的数据类型、jvzquC41dnuh0lxfp0tfv8F375765@=1ctzjeuj1fgzbkux135;29@64:
7.C/C++程序开发:cJSON的使用(创建与解析JSON数据)JSON格式的数据示例: 这是表示未来几天天气预报的json字符串{ "success": "1", "result": [ { "weaid": "1", "days": "2021-09-17", "week": "星期五", "cityno": "beijing", "citynm": "北京", "cityid": "101010100", "temperature": "26℃/17℃", "humidity": "0%/0%", "jvzquC41fg|fnxugt0gmk‚zp0eun1jwvkerf1A945:=
8.前端JS经典:Contenttype详解生成边界来分割字段,支持文件上传的格式。 3.3 application/json JSON 是一种轻量级的数据格式,以“键-值”对的方式组织的数据。需要参数本身就是 json 格式的数据。 4. 其他 Content-type 类型 text/plain:纯文本格式; text/html:HTML 格式; text/css:Cascading Style Sheets; jvzquC41fg|fnxugt0gmk‚zp0eun1jwvkerf1::354;9
9.python中JSON数据格式的详细使用教程python什么是JSON? JSON是一种数据格式,由美国程序设计师DouglasCrockford创建的,JSON全名是JavaScript Object Notation,由JSON英文全文字义我们可以推敲JSON的缘由,最初是为JavaScript开发的。这种数据格式由于简单好用被大量应用在Web开发与大数据数据库(NoSQL),现在已成为一种著名数据格式,Python与许多程序语言同时采用与支持。jvzquC41yy}/lk:30pku1y~vjqt05::;78xbi7mvo
10.JMeter断言之JSON断言▲ 什么是JSON JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式。 JSON容易理解,便于阅读和编写;同时计算机也易于解析和生成,所以JSON有广泛的应用。 JSON基于如下两种结构: 1.名称/值对的集合 在各种语言中,这可以作为对象(object)、记录(record)、结构(struct)、字典(dictionary)、jvzq<84yyy4dj~fpuktgq7hqo1ou|r}wp1814:3jvor
11.什么是JSON格式数据及简单操作快乐于行什么是JSON格式数据及简单操作 什么是JSON格式数据 对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。 数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右jvzquC41yy}/ewgnqiy/exr1cwzpojykqp5btlmkxg532:713453987:5882:7mvon