Web-Jsonデータ交換フォーマット

序文

WEB学習はデータ転送を避けられないため、ブラウザとサーバー間のデータ転送には統一されたフォーマットが必要主なテキストフォーマットはJson

JSONの概要

JSON(JavaScript Object Notation)は、データ交換に使用されるテキスト形式であり、
XMLと同様に、あらゆるプログラミング言語で使用できる単なるデータ形式です。

  1. Jsonはキーと値のストレージです。キーは文字列、数値をサポートし、値はほとんどのタイプをサポートします
  2. Json自体は文字列ですが、Jsonと呼ばれる特定の形式、つまりこの形式のすべてのシンボルの文字列があり、すべての言語が文字列をサポートしています。つまり、Jsonは任意のプログラミング言語で使用できます
  3. Jsonはデータ交換に使用され、軽量のデータ交換フォーマットです(XMLは重量のあるデータフォーマットです)。
  4. 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番目のパラメーターをもたらす必要があります

  1. スペースは数値で、各要素間の間隔を示します
<script>
    var data = {"name":"zhangsan","country":"China"};
    var jsonData=JSON.stringify(data,null,2);
    alert(jsonData);
</script>

ここに画像の説明を挿入

  1. spaceは、「\ t」を使用した「tab」のカスタマイズされたスペース美化出力です
var jsonData=JSON.stringify(data,null,"\t");

ここに画像の説明を挿入

  1. スペースは文字列、固定文字列を追加
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のレビューは大体それであるからです。

公開された121元の記事 ウォン称賛31 ビュー7869

おすすめ

転載: blog.csdn.net/key_768/article/details/105385638