最近在逛编程问题答案的时候看到了这个问题:如何将一个JSON数组类型的字符串转换成JSON数组,然后遍历数组取出JSON对象,最后在JS中取出它的属性。在这里,我想给同样有疑问的朋友们一些解答。当然,也欢迎大家在大神留言区留下更好的答案。
首先我们回到源头问一下,JSON到底是什么?为什么JSON很容易交换数据?本文将从以下几个方面来理解JSON:
首先是对“JSON是一种轻量级数据交换格式”的理解;
然后看JSON和经常混淆的JS对象的区别;
json字符串被转换成json数组,属性值被遍历;
JSON是什么?
JSON是一种轻量级的数据交换格式。
如果你没去过JSON的官方介绍,可以去这里。官方的介绍已经说的很清楚JSON是什么了。我把什么是JSON提炼为以下几个方面:
1。数据格式
格式是什么?就是规定你的数据应该如何表示。以栗子为例。有一个人叫“260”,身高“160cm”,体重“60kg”。现在你有很多选择来把这个人的信息传递给其他人或其他东西:
以上所有的选择,传递的数据都是一样的,但是你可以看到形式是可以变化的,就是各种格式之后的数据,JSON就是其中的一种表示。
2。基于文本的数据格式
JSON是一种基于文本的数据格式,与基于二进制的数据相反。所以JSON交付的时候是一个符合JSON格式的字符串(至于JSON的格式是什么,我们会在第二部分讲到)。我们经常称之为“JSON字符串”。
3。轻量级数据格式
在JSON之前,有一种数据格式叫xml,现在还在广泛使用,但是JSON更轻量级。例如,xml需要很多标签。就像上面的例子,你可以清楚的看到标签本身在xml格式的数据中占据了大量的空空间,而JSON则更轻,也就是同样的数据在JSON格式中占用的带宽更少,在有大量数据请求和传输的时候优势明显。
4。广泛用于数据交换
轻量级对于数据交换来说已经是一个优势,但更重要的是JSON易于读写和机器分析,也就是说这个JSON对人和机器都是友好的,而且是轻量级的,独立于语言(因为是基于文本的),所以JSON被广泛用于数据交换。
以ajax的前端JS POST请求为例,后端PHP处理请求为例:
前端构造一个JS对象,用于包装要传递的数据,然后将JS对象转化为JSON字符串,再发送请求到后端;后端PHP接收到这个JSON字符串,将JSON字符串转化为PHP对象,然后处理请求。
可以看到,这里同样的数据有三种不同的形式,分别是前端的JS对象,传输的JSON字符串,后端的PHP对象。JS对象和PHP对象显然不是一回事,但是既然大家都用JSON来传输数据,那么大家都可以理解这种数据格式,也可以很容易地把JSON转换成自己能理解的数据结构,方便了。其他语言环境下的数据交换也是如此。
经常混淆的JSON和JS对象
经常听到“JSON是JS的子集”这句话,以前也一直这么想。你可以把每一个符合JSON格式的字符串解析成JSS,直到我发现一些奇怪的东西…
1。为什么两个根本不同的事物如此接近
JSON和JSON对象本质上根本不是一回事,就像“斑马线”和“斑马线”一样。“斑马线”是根据斑马身上的条纹呈现和命名的,但斑马线是有生命的,也是无生命的。
同样,”JSON & # 8221全名”JavaScript对象符号”,所以它的格式(语法)是基于JS的,但它是一个格式,JS对象是一个实例,一个存在于内存中的东西。
开个玩笑,如果JSON是基于PHP的话,可能叫PON,形式可能是这样的[‘propertyOne & # 8217= & gt‘foo & # 8217, ‘propertyTwo & # 8217= & gt42,],如果是这样,那么JSON现在可能更接近PHP了。
另外,JSON因为是文本格式可以传输,但是JS对象不能传输。从语法上来说,JSON会更严格,但是JS对象会很松散。
那么,为什么这两种不同的东西如此接近呢?因为JSON毕竟是从JS进化来的,语法也差不多。
2。JSON格式的JSON对象的严格语法是什么
我们先以“作为对象的键-值对”的形式比较一下两者的区别。至于JSON还能代表什么形式,对比之后列出来。
可以看到,与JS对象相比,JSON的格式更加严格,所以大部分写出来的JS对象都不符合JSON格式。
json字符串被转换成JSON数组,属性值被遍历
方法1:使用Iterator迭代器遍历值
方法2:使用for循环
本文来自长街旧人投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/640346.html