《说人话》第一篇 之 JSON 传输格式

可能《说人话》系列好多用词会不够谨慎,但是对于看这个系列的人易于理解就行,如有不当,欢迎指出。

很多人搜JSON是啥,在刚接触前端的时候还以为它是一种很牛逼的技术,我刚开始也是。但与其说技术,不如说是一种标准,一种双方收发数据的约定。还是蒙没关系,听我慢慢解释。

一、JSON长啥样

简单来说,JSON就是一段文本,比喻得再形象一点也可以说,JSON就可以是一串字符串
我们先来看一下JSON字符串长啥样,比如说有这么一个数据,a有两个儿子,一个叫b一个叫c,a,b,c各有他们的名字

{
	"a":{
	 	"name":"a",
		"child":[
			"b":{
				"name":"b"
			},
			"c":{
				"name":"cn "
			}
		]
	}
}

看起来像js中的对象吧,但是其实可以看成这样
{ "a":{ "name":"a", "child":[ "b":{ "name":"b" }, "c":{ "name":"cn " } ] } }

它就是一个文本,或者说看成一串字符串。那么这串JSON格式的字符串有什么用呢?

二、为什么会需要JSON,它有什么用

当然是为了传输结构化数据用的,什么是结构化数据呢,说人话就是就是数据和数据之间有关联的数据格式。相反则是非结构化数据

比如分开说a的名字是a这个数据与b的名字是b这个两个数据有关联吗,没有关联,那要将他们关联起来怎么办,就得变成a的名字是a并且他的儿子b的名字是b

如果机器懂人话的话,那它确实可以当作结构化数据。但是机器不懂人话,我们教他去识别博大精深的中国语言文化实在是太困难了,你看siri做了好几年了,也只不过是人工ZZ,不是针对谁,等真正的贾维斯出来可能还要个好几十年上百年。

所以那就得设计一个用来描述数据的语言格式、标准出来,使它易于看懂,也易于程序去解析它,于是就有了JSON。它可以清晰地表示出数据之间的关系或标示某个数据。

{
  "a":{
    "name":"a",
    "child":{
      "b":{
        "name":"b"
      }
    }
  }
}

对于人来说是不是简单明了清晰可见,对于程序引擎来说,它的序列化反序列化也非常简。

序列化反序列化说人话就是由程序内存中的各种数据类型,比如说对象数组等,与文本(字符串)相互转化。

那我们怎么使用它呢?

三、JSON的使用

前端javascript语言内置了解析和生成JSON的方法,不需要自己花时间去解析——

解析JSON

使用JSON.parse()方法即可

const jsonStr = `{
  "a":{
    "name":"a",
    "child":{
      "b":{
        "name":"b"
      }
    }
  }
}`
const obj = JSON.parse(jsonStr)
console.log(obj.a.child.b.name)//b
生成JSON

使用JSON.stringify方法即可

const obj = {
	a:{
		name:"a",
		child:{
			b:{
				name:"b"
			}
		}
	}
}
const jsonStr = JSON.stringify(obj)
console.log(jsonStr)
//{"a":{"name":"a","child":{"b":{"name":"b"}}}}

是不是很简单

在其他语言,也有相应的方法供编程者去解析和生成。

描述性语言格式其实还有XMLHTML等,而XMLJSON出来之前,在传输、存储格式化数据等领域独领风骚。
我们来看看XML——

XML与JSON的对比

XML样子
<a>
	<name>a</name>
	<child>
		<b>
			<name>b</name>
		</b>
	</child>
</a>

XML与JSON对比
  1. 数据体积——因为多了很多重复标记标签,所以XML体积会比JSON大很多
  2. 传输速率——当然是JSON体积小传输快
  3. 可读性——差不多
  4. 与编程语言的交互性——JSON在javascript中可是亲儿子一样的级别,它和对象数组之间的相互转换使用真的是无缝连接

所以未来的趋势是谁不用说了吧,如果通过这篇文章看懂了JSON,就赶紧使用起来吧

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值