Json

Json

@BotSorce
https://t.me/botsorce



اول ! JSON چیست ؟

json مخفف JavaScript Object Notation میباشد که روش نشانه گذاری آبجکت ها میباشد و از آن برای ذخیره سازی سازی اطلاعات و دیتا ها استفاده میشود.

JSON از XML بسیار ساده تر و در اکثر مواقع کم حجم تر میباشد ! .Json بر خلاف نامش در تمام زبان ها کاربرد دارد و روشی برای تبادل اطلاعات بین زبان های مختلف هم به حساب می آید . فرض کنید یک آرایه در زبان PHP دارید ، راحت با تبدیل آن به Json میتوانید در جاوا از آن ارایه استفاده کنید . یکی از مزایای Json تبدیل حروف به یونیکد هست یعنی فارسی را به بهترین شکل ساپورت میکند !

ساختار یک JSON

شما در JSON با علامت های [ ] , { } بسیار سروکار دارید . شما اگر بخواهید یک آبجکت داشته باشید از { } استفاده میکنید و زمانی که میخواهید یک آرایه داشته باشید از [ ] استفاده میکنید . برای مثال فرض کنید کد XML زیر رو میخواید به JSON تبدیل کنید :



<musics>

    <music>

        <title> Title of music #1 </title>

        <desc> Description of music #1</desc>

        <year> Year of music #1</year>

    </music>

    <music>

        <title> Title of music #2 </title>

        <desc> Description of music #2</desc>

        <year> Year of music #2</year>

    </music>

</musics>

کد json :



{

    "musics":[

        {"title":"Title of music #1","desc":"Description of music #1","year":"Year of music #1"},

        {"title":"Title of music #2","desc":"Description of music #2","year":"Year of music #2"}

    ]

}

میبینید که زمانی که بخواید یک آرایه از یک سری آبجکس داشته باشید از [ ] و زمانی که یک آبجکت داشته باشیم از { } استفاده میکنیم .

تبدیل JSON به متغیر و متغیر به JSON در زبان های مختلف

شما در زبان PHP و Javascript کار راحتی دارید و در اندروید-جاوا یکم دردسر دارید ولی بزودی به آموزش Gson کمی مشکل کار رو کم میکنیم !

در PHP

برای این کار در PHP ما ۲ تابع به نام های json_encode و json_decode داریم ( خیلی هم خوب ! ) . برای مثال :


$array = array(

  "users"=>array(

      array("username"=>"Admin","password"=>"1234"),

      array("username"=>"Polic","password"=>"12345"),

      array("username"=>"Amir","password"=>"12324"),

  )

);

echo json_encode($array);

و خروجی :



{"users":[{"username":"Admin","password":"1234"},{"username":"Polic","password":"12345"},{"username":"Amir","password":"12324"}]}

حالا فرض کنید همین خروجی رو دوباره میخوایم به یک متغیر تبدیل کنیم برای این کار از json_decode استفاده میکنیم :



var_dump( json_decode('{"users":[{"username":"Admin","password":"1234"},{"username":"Polic","password":"12345"},{"username":"Amir","password":"12324"}]}'));

خروجی :



object(stdClass)#1 (1) {

["users"]=>

  array(3) {

    [0]=>

    object(stdClass)#3 (2) {

    ["username"]=>

      string(5) "Admin"

      ["password"]=>

      string(4) "1234"

    }

    [1]=>

    object(stdClass)#2 (2) {

    ["username"]=>

      string(5) "Polic"

      ["password"]=>

      string(5) "12345"

    }

    [2]=>

    object(stdClass)#4 (2) {

    ["username"]=>

      string(8) "Amir"

      ["password"]=>

      string(5) "12324"

    }

  }

}

فقط به نوع خروجی توجه کنید ، ما یک آرایه عادی داشتیم ولی خروجی Object بود یعنی قبلا $array[“users”] جواب میداد الان $array->users به این نکته توجه کنید .

در جاوااسکریپت

ما در جاوااسکریپت یک آبجکت به نام JSON داریم که ۲ متد stringify و parse برای ما مهم هستند ، متد stringify متغیر رو به رشته ی json و parse جیسون رو به متغیر تبدیل میکند . برای مثال :


<script>

    var object2 = {

      "users":[

          {"username":"user1",

              "password":"pass1"},

          {"username":"user2",

              "password":"pass2"},

 

      ]

    };

 

    console.log(object2);

    console.log(JSON.stringify(object2));

    console.log(JSON.parse(JSON.stringify(object2)));

</script>

خروجی :


یکم توجه کنید متوجه میشید که متن JSON ما دقیقا با آرایه JS ما یکی هست . اگر برایتان این مسئله مبهم هست به جزئیات نام JSON دوباره یک توجهی بکنید .

میبینید که JSON به همین راحتی کمک بزرگی به ما میکند درحالی که بسیار کم حجم تر و ساده تر از XML میباشد .


Report Page