JSON形式
JSONの これはテキストベースのデータ交換形式であるため、プログラムだけでなく人にとっても読みやすい形式です。その名前は英語の頭字語に対応しています。 JavaScript Object Notation そして次のように標準化されています ECMA-404。構文的には非常に近い形式ですが、 JavaScriptをオブジェクトデータをエンコードしたり取得したりする処理が非常に簡単なため、他の多くのプログラミング言語でも使用されています(C, C + +, Java, Python ...) たとえば、XML の代替として使用します。XML は同様の目的を持っていますが、より多くのメタ情報が含まれるため、より多くのテキストが必要となり、より多くのスペースを消費し、より多くの帯域幅を消費し、エンコードとデコードにより多くのリソースが必要になります。そこに含まれる情報。 JSONの.
でエンコードされたオブジェクトのデータ JSONの これらは中かっこで囲まれ、その中に含まれるさまざまなプロパティはカンマで区切られ、プロパティ名は値の前にあり、値とコロンで区切られます。
プロパティ名は二重引用符を使用して引用符で囲む必要があります (一部のパーサーは一重引用符をサポートします)。また、一部の特殊文字 (アクセント記号など) を名前に使用できますが、一部の分析エンジンの基準を回避したり、プロパティ、特に dot(object.property) 構文を使用する場合の競合を回避します。
1
2
3
4
5
6
7
8
|
{
“dispositivo”:“EA4-CD-145”,
“tension”:12.1,
“intensidad”:0.99,
“temperatura”:19.25,
“deteccion”:false,
“tiempo_uso”:158.36
}
|
上の例では、単純な数値、ブール値、またはテキスト値を持つ XNUMX つのプロパティを持つオブジェクトが表示されます。しかし形式的には JSONの、プロパティは、テキスト文字列 (引用符で囲まれたテキスト)、数値 (さまざまな形式)、またはブール値 (true または false) に加えて、オブジェクト (「特別なオブジェクト」null を含む) または配列を値として取得することもできます。 )。
言語と同じように JavaScriptを (JSONの のサブセットです JavaScriptを) 行列を表現するには、その値を角括弧で囲み、カンマで区切ります。最も単純なケースを以下の例に示します。これは数値で構成される XNUMX 次元配列、つまりベクトルです。
1
2
3
|
{
“temperatura”:[10.00,12.50,15.75,18.25,19.50,20.00,21.75,22.00,22.00,22.25]
}
|
En JavaScriptを 配列のすべての要素が同じ型である必要はありません。たとえば、テキスト文字列と数値を混在させることができます。 XNUMX 次元配列であるベクトルは、別の配列の要素の XNUMX つになることもできるため、可変長の多次元配列を構築できます。次の例は、XNUMX つのプロパティを持つオブジェクトを示しています。XNUMX つ目は固定長の XNUMX 次元配列、XNUMX つ目は可変長、XNUMX つ目は異なる型の値を持つ配列で形成されます。
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
|
{
“coordenada”:
[
[78.59,12.33],
[85.23,8.01],
[90.95,6.12],
[92.50,3.86],
[96.12,–1.55],
[98.60,–3.14]
],
“impacto”:
[
[5,20,10,36,10,2],
[33,41,43],
[44,44,44,49,51,52,60,62,59],
[12,11,15,16]
],
“entrada”:
[
“T26-A”,
[63.15,57.37],
14420.122256,
true
],
}
|
次の例では、他のオブジェクトを親オブジェクトのプロパティの値として使用します。ネストのレベルに制限はないため、親のプロパティ値であるオブジェクトは、他のオブジェクトをプロパティ値として持つこともできます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
{
“pir”:
{
umbral:0.15,
ultima:258982.67,
deteccion:false
},
“termometro”:
{
actual:19.25,
minima:8.05,
maxima,22.60
},
“vibracion”:false,
“distancias”:
[
12.60,
9.10,
12.60,
8.90
]
}
|
それが起こるのと同じように JavaScriptを、エスケープ コードは、テキスト文字列内に特定の文字を含めるために使用されます。最も一般的な方法は、エスケープバー、文字 u、および次の形式の XNUMX つの XNUMX 進数で表現された Unicode コードを使用することです。 "\u263A"
たとえば、☺を参照してください。
ほとんどの言語 (C と同様) に存在する標準文字は次のとおりです。
- 反動
\b
コード ASCII 8(0x08) - タブ
\t
コード ASCII 9 (0x09) 通常は HT (horizontal tabulator) として表されます。 - 改行
\n
コード ASCII 10 (0x0A) 通常はLF(改行)で表されます。 - 新しいページ
\f
コード ASCII 12 (0x0C) 通常は FF (フォーム フィード) として表されます。 - リターン
\r
コード ASCII 13 (0x0D) 通常は CR (キャリッジリターン) として表されます。 - 引用マーク
\"
コード ASCII 34(0x22) - スプリットバー
\/
コード ASCII 57(0x2F) - バックスラッシュ
\\
コード ASCII 134(0x5C) - ユニコードコード
\uXXXX
に由来する C (そしてそれに関連して Unixの などなど GNU / Linuxの) 行末は通常、次のように表されます。 \n
そしてそれは選択されなければならないものです JSONの しかし、一部のオペレーティング システムでは他の代替手段が優先されることを覚えておくと興味深いでしょう。 Windows は通常、次のように表します。 \r\n
行末と Mac OS (OS より前) \r
数値形式については、こちらも参考にしてください。 JavaScriptを。小数点区切り文字はピリオド、ダッシュ (ASCII 45 0x2D) は負の符号として使用され、 指数形式での表記 (科学的記数法) を使用します E
インジケーターとして (大文字または小文字を使用できます)
1
2
3
4
5
6
|
{
“sondas”:[“ZA-01”,“ZB-01”,“ZB-02”,“ZB-03”],
“maximos”:[5.612E+6,1.3774E+8,1.034E+9,2.992E+7],
“minimos”:[1.25E–3,1.01E–3,1.2E–7,2.351E–3],
“ayuda”:“Antes de colocar\nel sensor en el medio\nAsegúrese de verificar\nEl calibrado previo”
}
|
冒頭でも述べたように、テキストとして取得したデータを利用するために、さまざまなプログラミング言語には解析機能や代入機能が備わっています。次の例は、これらがどのように使用されるかを示しています。 JavaScriptを。コンソールから使用できるように、データ割り当てが含まれています JSONの 通訳者が使用する ECMA 標準に応じて発生する可能性のあるエラーを回避するため JavaScriptを オブジェクトの割り当てが行われます JSONの 一行で。 6 年第 2016 版 (ECMA-262) 複数行の文字列をサポートします。エディション 5 (2011 年まで) ではエスケープ コードを追加する必要があります。 \
以前のものでは、手動で解決するか、単一行を使用する必要がありました。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
datos=‘{“fecha”:”20160315102513″,”sonda”:”el acceso principal”,”temperatura”:19.25,”ultravioleta”:2.8,”toldo”:false}’;
estado=JSON.parse(datos);
mensaje=“El “;
mensaje+=estado.fecha.substring(6,8);
mensaje+=” del “;
mensaje+=estado.fecha.substring(4,6);
mensaje+=” de “;
mensaje+=estado.fecha.substring(0,4);
mensaje+=” la temperatura era de “;
mensaje+=estado.temperatura;
mensaje+=” °C en “;
mensaje+=estado.sonda;
mensaje+=” con el toldo “;
mensaje+=estado.toldo?“bajado”:“subido”;
mensaje+=” y un índice UV de “;
mensaje+=Math.round(estado.ultravioleta);
console.log(mensaje);
//El 15 del 03 de 2016 la temperatura era de 19.25 °C en el acceso principal con el toldo subido y un índice UV de 3
|
新規ユーザーを混乱させないための警告 JavaScriptを。コードの内部 JavaScriptを オブジェクトの作成にテキスト文字列を使用する必要はありません。前の例では、サーバーなどから到着するデータをシミュレートするために使用されています。オブジェクトを変数に割り当てるには、次のようにします。
1
|
var estado={temperatura:21.5, tension:231.25, cosumo:0.85, nombre:“pasillo”};
|
そのオブジェクトは、たとえば次の関数を使用してテキストに変換できます。 stringify
次のように:
1
|
var texto=JSON.stringify(estado);
|
フォーマット JSONの これは非常に柔軟ですが、主に人間が読めるようにテキストベースであるため、いくつかの欠点があります。 XNUMX つ目は、必要以上に多くのメモリを必要とし、必要以上の帯域幅を消費することです。前の例では、経済性よりも読みやすさを目的とした形式が使用されているため、節約の例ではありません。それでも、形式の多くの要素 (中括弧、括弧、引用符など) は継続されます。生の情報と比較してリソースを消費します。
XNUMX 番目の問題は、純粋にバイナリ データ (画像など) を扱う場合に発生します。小さな部分を扱う場合は、特殊文字の書式設定を解決するために説明した方法で解決できますが、特定の次元の情報のエンコードに関する場合は、フォーマット内に埋め込む必要があります JSONの 別のテキスト形式を使用します。この問題を解決するために最もよく使用されるエンコーディングは次のとおりです。 Base64 多くの言語には、情報を一方向または別の方向に変換するライブラリがあるためです。操作されているデータが主にこのタイプである場合、および/またはプログラムを使用せずに人間が情報を解釈する必要がない場合は、フォーマットが次のとおりであるかどうかを検討する価値があります。 JSONの が最適です。
コメントを投稿