回答編集履歴

1

配列初期化子、HTTPレスポンス

2019/08/31 15:55

投稿

think49
think49

スコア18162

test CHANGED
@@ -1,4 +1,8 @@
1
+ ## JSON
2
+
3
+
4
+
1
- サーバから受取っているデータは**JSON**(技法的にはJSONP)ではないでしょうか。
5
+ サーバから受取っているデータは**JSON**(技法的にはJSONP)ではないでしょうか。
2
6
 
3
7
 
4
8
 
@@ -6,4 +10,64 @@
6
10
 
7
11
 
8
12
 
13
+ ### 配列初期化子
14
+
15
+
16
+
17
+ 厳密には、`ViewportInfoService.GetViewportInfo` はJavaScriptコードとして受け取っていて、`["地図データ ©2019 Google",[...]]` は**配列初期化子**として扱われています。
18
+
19
+
20
+
21
+ - [12.2.5 Array Initializer - ECMAScript® 2019 Language Specification](http://www.ecma-international.org/ecma-262/10.0/#sec-array-initializer)
22
+
23
+
24
+
25
+ Googleサーバ側ではJavaScriptコード生成時にJSONにシリアライズする事で実装していると思われますが、クライアント側から見れば、**JSONではありません**。
26
+
27
+ 「JavaScriptコード」を返し、**受け取ったJavaScriptコードを直接実行する**のがJSONPの特徴です。
28
+
29
+
30
+
31
+ ### HTTPレスポンス
32
+
33
+
34
+
35
+ HTTP通信は**文字列**でデータ交換を行うものなので、JavaScriptからそれらを扱うにはJavaScriptのデータに変換可能な**書式**でなければなりません。
36
+
37
+
38
+
39
+ - `JSON.parse` (JSONのパーサ)
40
+
41
+ - `DOMParser` (HTMLのパーサ)
42
+
43
+ - `document.implementation.createDocument` (XMLのパーサ)
44
+
45
+
46
+
47
+ のように予め、JavaScriptが標準でパーサを用意している書式は扱いやすいといえます。
48
+
49
+ 書式が決まっていれば、これらでなくてもOKですが、例えば、
50
+
51
+
52
+
53
+ - サーバからCSV書式を返すよ
54
+
55
+ - JavaScript標準APIにCSVパーサはないから、自分で頑張って書いてね
56
+
57
+
58
+
59
+ というドキュメントはあまりに不親切なので、
60
+
61
+
62
+
63
+ - サーバからCSV書式を返すよ
64
+
65
+ - CSVパーサは標準にないから、こちらで用意した `google.CSV.parse` を使ってね
66
+
67
+
68
+
69
+ という仕様になると思われますが、Googleが自社でパーサを書くより、予め用意されているパーサを使う方がコストが安く、安全です。
70
+
71
+
72
+
9
73
  Re: Ms.yy さん