Json   发布时间:2022-04-22  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了JSON和JSONP大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

<table class="text"><tr class="li1">
<td class="ln"><pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318

@H_696_324@一个是AJAX以何种格式来交换数据?第二个是跨域的需求如何解决?这两个问题目前都有不同的解决方案,比如数据可以用自定义字符串或者用XML来描述,跨域可以通过服务器端代理来解决。
 
但到目前为止最被推崇或者说首选的方案还是用JSON来传数据,靠JSONP来跨域。而这就是本文将要讲述的内容。
 
 
 
JSON和JSONP然只有一个字母的差别,但其实他们根本不是一回事儿:JSON是一种数据交换格式,而JSONP是一种依靠开发人员的聪明才智创造出的一种非官方跨域数据交互协议。我们拿最近比较火的谍战片来打个比方,JSON是地下党们用来书写和交换情报的“暗号”,而JSONP则是把用暗号书写的情报传递给自己同志时使用的接头方式。看到没?一个是描述信息的格式,一个是信息传递双方约定的方法。
 
 
 
既然随便聊聊,那我们就不再采用教条的方式来讲述,而是把关注重心放在帮助开发人员理解是否应当选择使用以及如何使用上。
 
 
 
 什么是JSON?
 
 
前面简单说了一下,JSON是一种基于文本的数据交换方式,或者叫做数据描述格式,你是否该选用他首先肯定要关注它所拥有的优点。
 
 
 
JSON的优点:
 
1、基于纯文本,跨平台传递极其简单;
 
2、Javascript原生支持后台语言几乎全部支持;
 
3、轻量级数据格式,占用字符数量极少,特别适合互联网传递;
 
4、可读性较强,然比不上XML那么一目了然,但在合理的依次缩进之后还是很容易识别的;
 
5、容易编写和解析,当然前提是你要知道数据结构;
 
JSON的缺点当然也有,但在作者看来实在是无关紧要的东西,所以不再单独说明。
 
 
 
JSON的格式或者叫规则:
 
JSON能够以非常简单的方式来描述数据结构,XML能做的它都能做,因此在跨平台方面两者完全不分伯仲。
 
1、JSON只有两种数据类型描述符,大括号{}和方括号[],其余英文冒号:是映射符,英文逗号,是分隔符,英文双引号""是定义符。
 
2、大括号{}用来描述一组“不同类型的无序键值对集合”(每个键值对可以理解为OOP的属性描述),方括号[]用来描述一组“相同类型的有序数据集合”(可对应OOP的数组)。
 
3、上述两种集合中若有多个子项,则通过英文逗号,进行分隔。
 
4、键值对以英文冒号:进行分隔,并且建议键名都加上英文双引号"",以便于不同语言的解析。
 
5、JSON内部常用数据类型无非就是字符串、数字、布尔、日期、null 这么几个,字符串必须用双引号引起来,其余的都不用,日期类型比较特殊,这里就不展开讲述了,只是建议如果客户端没有按日期排序功能需求的话,那么把日期时间直接作为字符串传递就好,可以省去很多麻烦。
 
 
 
JSON实例:
 
复制代码
// 描述一个人
 
var person = {
    "Name": "Bob",    "Age": 32,    "Company": "IBM",    "ENGIneer": true
}
 
// 获取这个人的信息
 
var personAge = person.Age;
 
// 描述几个人
 
var members = [
    {
        "Name": "Bob",        "Age": 32,        "Company": "IBM",        "ENGIneer": true
    },    {
        "Name": "John",        "Age": 20,        "Company": "Oracle",        "ENGIneer": false
    },    {
        "Name": "Henry",        "Age": 45,        "Company": "Microsoft",        "ENGIneer": false
    }
]
 
// 读取其中John的公司名称
 
var johnsCompany = members[1].Company;
 
// 描述一次会议
 
var conference = {
    "Conference": "Future MarkeTing",    "Date": "2012-6-1",    "Address": "Beijing",    "Members": 
    [
        {
            "Name": "Bob",            "Age": 32,            "Company": "IBM",            "ENGIneer": true
        },        {
            "Name": "John",            "Age": 20,            "Company": "Oracle",            "ENGIneer": false
        },        {
            "Name": "Henry",            "Age": 45,            "Company": "Microsoft",            "ENGIneer": false
        }
    ]
}
 
// 读取参会者Henry是否工程师
 
var henryIsAnENGIneer = conference.Members[2].ENGIneer;
复制代码
 
 
关于JSON,就说这么多,更多细节请在开发过程中查阅资料深入学习。
 
 
 
 什么是JSONP?
 
 
先说说JSONP是怎么产生的:
 
其实网上关于JSONP的讲解有很多,但却千篇一律,而且云里雾里,对于很多刚接触的人来讲理解起来有些困难,小可不才,试着用自己的方式来阐释一下这个问题,看看是否有帮助。
 
1、一个众所周知的问题,Ajax直接请求普通文件存在跨域无权限访问的问题,甭管你是静态页面、动态网页、web服务、WCF,只要是跨域请求,一律不准;
 
2、不过我们又发现,Web页面调用js文件时则不受是否跨域的影响(不仅如此,我们还发现凡是拥有"src"这个属性标签都拥有跨域的能力,比如

@H_801_325@
 

大佬总结

以上是大佬教程为你收集整理的JSON和JSONP全部内容,希望文章能够帮你解决JSON和JSONP所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: