序文
WEB学習はデータ転送を避けられないため、ブラウザとサーバー間のデータ転送には統一されたフォーマットが必要主なテキストフォーマットはJson
JSONの概要
JSON(JavaScript Object Notation)は、データ交換に使用されるテキスト形式であり、
XMLと同様に、あらゆるプログラミング言語で使用できる単なるデータ形式です。
- Jsonはキーと値のストレージです。キーは文字列、数値をサポートし、値はほとんどのタイプをサポートします
- Json自体は文字列ですが、Jsonと呼ばれる特定の形式、つまりこの形式のすべてのシンボルの文字列があり、すべての言語が文字列をサポートしています。つまり、Jsonは任意のプログラミング言語で使用できます
- Jsonはデータ交換に使用され、軽量のデータ交換フォーマットです(XMLは重量のあるデータフォーマットです)。
- JSONの起源とJavaScript、JSON構文はjavaScript構文のサブセットです
JSON構文
まず、Jsonの定義は
データ交換用のテキスト形式であり、データ交換では交換されるデータの量とデータ型を考慮する
必要があります。つまり、交換されるデータは配列コレクションとオブジェクトでなければなりません。
JavaScriptでオブジェクトを説明するには、中かっこ{}を使用し、かっこで配列を記述します[]
JSON構文はJavaScriptのサブセットなので、当然のことながら
メッセージオブジェクトについて説明します。
var msg = {
"name" : "zhangsan",
"id" : 123,
"country" : "China"
}
メッセージ配列について説明します。
var msg = [
{"name" : "zhangsan", "id" : 123, "country" : "China"},
{"name" : "lisi","id" : 1234,"country" : "US"},
]
形式は次のとおりです。key:valueキーと値のペアの形式
Jsonは常に単なるデータ形式であり、前述のJsonオブジェクトはJson形式に準拠するJavaScriptオブジェクトです
注意が必要な事項
Jsonがサポートするデータ型:
- 数値:数値(整数または浮動小数点)
- 文字列:文字列(二重引用符で囲む)、英語の二重引用符( "")である必要があります。一部の弱い言語は単一引用符をサポートできます
- ブール値:論理値(trueまたはfalse)
- 配列:配列(角括弧内)、通常は値の位置、[…]
- オブジェクト:オブジェクト(中かっこ内)、通常は値の位置、{…}
- null:null
Jsonのデータでは、引用符、カンマ、特殊演算子/、*、-、+、>>
などは使用できません。
JSONの文法規則はJavaScriptのサブセットです
jsonは要素の値を取得します
Json構文はJavaScriptのサブセットであり、JS構文を介してJson要素を簡単に取得できます
<script>
var data = {
"name" : "zhangsan",
"country" : "China"
}
alert(data.name+" - "+data.country)
</script>
ただし、前述のように、値は数値型データにすることもでき、数値型データはこのように取得できませんが
、データ[1]またはデータ[“ 1”]
<script>
var data = {
"name" : "zhangsan",
"country" : "China",
"1" : "法外狂徒"
}
alert(data["1"])
</script>
変換
評価法
eval()関数は、JSONテキスト(JavaScript文字列)を解析してJavaScriptオブジェクトを生成できるJavaScriptコンパイラを使用します
ただし、括弧を使用して文字列を囲みます。
<script>
var data = '{"name":"zhangsan","country":"China"}';
var jsonData = eval("("+data+")");
alert(jsonData.name);
</script>
解析メソッド
JSON.parse()は、JavaScriptで一般的に使用されるJSON変換メソッドで、Json構文に準拠する文字列をJsonオブジェクトに変換できます。
<script>
var data = '{"name":"zhangsan"}';
alert(data.name);
var jsonData=JSON.parse(data);
alert(jsonData.name);
</script>
最初のポップアップボックスは未定義です。これは文字列であるため、JSからJsonデータを取得できません
parseは変換後のJsonオブジェクトです
stringifyメソッド
もちろん、JSONオブジェクトをシンボリックJsonルールで文字列に変換するメソッドstringifyもあります。
<script>
var data = {"name":"zhangsan"};
var jsonData=JSON.stringify(data)
alert(jsonData.name)
alert(jsonData);
</script>
最初のポップアップボックスは過小評価されており、変換されたものがJsonオブジェクトではないことを示しています
これは紐です
stringifyメソッドは、Json文字列コンテンツも変換できますJSON.stringify(value[, replacer[, space]])
3つのパラメーター、
パラメーター値、つまり変換されるJsonオブジェクトのみが存在します。
var jsonData=JSON.stringify(data)
2つのパラメーター:replacerパラメーターは関数または配列にすることができます
replacerパラメータが関数
関数の場合、 2つのパラメータ(キーと値、および戻り値)を取ることができます。
- 数値が返された場合、変換された文字列はJSON文字列に追加されます
- 文字列が返された場合、文字列は属性値としてJSONに追加されます
- ブール値が返される場合、JSON文字列に属性値として「true」または「false」が追加されます
- undefinedを返す場合、プロパティ値はJSON文字列に出力されません
<script>
var data = {"name":"zhangsan","country":"China"};
var jsonData=JSON.stringify(data,function (key, value) {
if (key == "name"){
value = "法外狂徒"
}
return value;
})
alert(jsonData)
</script>
stringifyメソッドは、Jsonの各キーと値のペアを判断します
パラメータreplacerが配列の場合、
結果セットのキーはヒットのみを出力し、ミスの属性はフィルタリングされます。
<script>
var data = {"name":"zhangsan","country":"China"};
var jsonData=JSON.stringify(data,["name"]);
alert(jsonData);
</script>
3番目のパラメータースペースはJsonの出力を美化
するためのものですが、3番目のパラメーターを使用するには2番目のパラメーターをもたらす必要があります
- スペースは数値で、各要素間の間隔を示します
<script>
var data = {"name":"zhangsan","country":"China"};
var jsonData=JSON.stringify(data,null,2);
alert(jsonData);
</script>
- spaceは、「\ t」を使用した「tab」のカスタマイズされたスペース美化出力です
var jsonData=JSON.stringify(data,null,"\t");
- スペースは文字列、固定文字列を追加
var jsonData=JSON.stringify(data,null,"hello");
軽量データ交換フォーマット
なぜJsonは軽量のデータ交換フォーマットなのですか?なぜXMLは重いデータ交換フォーマットなのですか?
Jsonデータ形式は比較的シンプルで、読み書きが簡単で、形式は圧縮されており、占有帯域幅は小さいです。XML形式に存在するさまざまなタグとは異なり、ファイルは巨大で、ファイル形式は複雑で、転送に帯域幅が使用されます
例を使用して、以下を示し
ます:書籍オブジェクト:書籍名の名前、著者オブジェクトの著者、価格価格の
著者オブジェクトは著者名authorNameを記述する必要があると、業績
Jsonは述べています:
var book = {
"name" : "时间简史",
"author" : {
"authorName" : "霍金",
"achievement" : "physicist"
},
"price" : 100
}
そしてXMLでは:
<book>
<name>时间简史</name>
<author>
<authorName>霍金</authorName>
<achievement>physicist</achievement>
</author>
<price>100</price>
</book>
さまざまなタグが
これだけでなく、XMLにも制約があります。priceが数値で空でない場合などは、制約ファイルを作成する必要があり、XMLファイル(dom4j、Xpath、Jsoupなど)の解析に時間がかかります。ブラウザごとに異なる解析方法が
あり、Json自体が文字列の文字列であるかどうか。これは解析が単純すぎて、さまざまなラベル仕様はありません。
XMLの基本について、XMLを本当に理解できますか?-XML Basicsは
本当にXMLを理解していますか?-XML解析メソッド
したがって、Jsonは徐々に主流のデータ交換フォーマットになりました
結局のところ、私はJavaバックエンドに携わっており、Jsonのレビューは大体それであるからです。