JSONデータの基礎使用

13696 ワード

これまでJSONをデータタイプにしたいと思っていましたが、この数日間使ってみると、JSONはデータのフォーマットだけで、int string doubleなどのデータタイプとは本質的な違いがあります.
JSON(JavaScript Object Notation)はJavaScriptプログラミング言語のサブセットです.JSONはJavaScriptのサブセットであるからこそ、この言語に明確に使われています.
中学校や高校の教科書のように、新しい技術、新しい知識を身につけたいです.まずその意味、つまりその存在価値を把握します.
JSONが広く使われるようになったのは、jsの重要性が高まったからである.もし私たちがJSON形式でオブジェクトを定義したら、対象名・キー名を通してその中のデータを過去に送ることができます.
JSONの使用を二つの部分に分けます.
1、他のデータタイプをJSONに変換する
    1.1まず言及したのはJSON公式に言及した方法:JSON.stringify();   
構文
     JSON.stringify(value[, replacer [, space]])  
パラメータ    valueJSON文字列の値に順番に並べます.    replacer 
オプション
このパラメータが一つの場合
関数としては、プログレッシブプロセスにおいて、プログレッシブされた値の各属性は、関数の変換と処理を経ます.このパラメータが一つの場合
配列は、この配列に含まれる属性名だけが最終的なJSON文字列に順序付けされます.    space 
オプション
インデント用の空白文字列を指定して、出力を美化します.
例を挙げて説明します
  ①valueのみの場合:
1 <script type="text/javascript">

2          var student = new Object();

3          student.name="Leon";

4          student.age = "24";

5          student.college = "shiep";

6 

7          var json = JSON.stringify(student);

8          console.log(json);

9  </script>
 出力結果:
{"name":"Leon","age":"24","college":"shiep"}

②パラメータには関数があります.
      オブジェクト+関数
      During the serialzation process,if a toJSON method exists for the value argment、 JSON.stringify first cals the toJSON method. If it does not exist,the original value is used. Next,if a replacer argment is provided,the value or toJSON return-value)is replacced with the return-value of the replacer argment.Finally,white spaces aradded to the value based on the optional スペース argment to generate the final JSON text.
   
 1 <script type="text/javascript">

 2          var student = new Object();

 3          student.name="Leon";

 4          student.age = "24";

 5          student.college = "shiep";

 6 

 7          student.toJSON = function(key){

 8               var replacement = new Object();

 9               for(var val in this){

10                 if(typeof(this[val])==='string')

11                   replacement[val] = this[val].toUpperCase();

12                 else

13                   replacement[val] = this[val]

14               }

15               return replacement;

16          }

17 

18          var json = JSON.stringify(student);       

19          console.log(json);

20 </script>
 
 
 
      配列+関数:       
 1 <script type="text/javascript">

 2             

 3             var students = new Array() ;

 4             students[0] = "Lanny";

 5             students[1] = "dong";

 6             students[2] = "I love you";

 7             

 8             var json = JSON.stringify(students,switchJson);

 9 

10             function switchJson(key,value){

11                 return value.toString().toUpperCase();

12             }

13             console.log(json);

14 </script>
出力: 
"LANNY,DONG,I LOVE YOU" 
    ③パラメータには配列があります.
     配列+行列     
 1 <script type="text/javascript">

 2             var students = new Array();

 3                 students[0] = "Leon";

 4                 students[1] = "James";

 5                 students[2] = "Frank";

 6 

 7             var schools = new Array();

 8                 schools[0] = "shiep";

 9                 schools[1] = "fdu";   

10 

11              var json1 = JSON.stringify(students,schools);

12              var json2 = JSON.stringify(schools,students);   

13 

14              console.log("json1="+json1);

15              console.log("json2="+json2);

16 </script>
     出力結果は:
1 json1=["Leon","James","Frank"]

2 json2=["shiep","fdu"]
       二つのパラメータが配列である場合は、前の配列のみがプログレッシブ化されます.
 
    オブジェクト+配列
 1 <script type="text/javascript">

 2             var student = new Object();

 3                 student.name = "Leon";

 4                 student.age = "24";

 5                 student.college = "shiep";

 6 

 7             var students = new Array();

 8                 students[0] = "college";

 9                 students[1] = "age";

10 

11             var json = JSON.stringify(student,students);

12             console.log(json);

13 </script>
 結果:
1 {"college":"shiep","age":"24"}
 
  ④3番目のパラメータ  
もし スペース は、数値である場合、戻り値が空白のテキストインデントで指定された数は、各レベルで指定されます. もし スペース 10より大きい場合、テキストは10つの空白をインデントします.
 
もし スペース 空の文字列ではなく、「\t」のように値テキストのインデントと文字列の文字列の各レベルを返します.
 
もし スペース 10文字以上の文字列のために、最初の10文字を使用します.  
 
 
1.2多くの場合、変換が必要な情報は既成の対象ではなく、私達がまとめて集める必要があります.この時に必要です.
 
下のコードは一つの表を一つの行単位でjsonを構成します.
 1 <script type="text/javascript">

 2         var fitModelsingle = new Array();

 3         $('#fitModelDispArea tr').each(function () {

 4             var tdArry = $(this).find("td");

 5             fitModelsingle.push("{\"VehicleBrandName\":\"" + tdArry.eq(0).text() + "\",\"VehicleManufacturerName\":\"" + tdArry.eq(1).text() + "\",\"VehicleSeriesPureName\":\"" + tdArry.eq(2).text() + "\",\"ModelYear\":\"" + tdArry.eq(3).text() + "\",\"VehicleModelName\":\"" + tdArry.eq(4).text() + "\"}");

 6         });
7 //fitModelsingle.join(); 8 //if (fitModelsingle.length != 0) { 9 // var fitModelList = "[" + fitModelsingle + "]";
11 //}
var fitModelList = JSON.stringify(fitModelsingle); //
console.log(fitModelList);
12 </script>

 
 1.3バックグラウンドから送られてくる多くのデータは文字列形式であり、ダブルクォーテーションマークは「表示されます.この場合はフォーマットを正しくしたいですが、文字に問題がある文字列はJSONに変換されます.」
  楽屋からlistが入ってきました.
 list=list.replace(/&quot;/g, '"');

 list= $.parseJSON(mathchingModelList);

出力するリストはJSONデータです. 注:使用するにはjQueryバッグを導入する必要があります.
       
2、JSONを他のデータタイプに変換する
   JSON.parseは一つのjson文字列を対象に解析します.