Json

  • December 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Json as PDF for free.

More details

  • Words: 958
  • Pages: 3
‫ﻳﺎﻫﻮ‬

‫‪ JSON‬ﭼﻴﺴﺖ؟‬ ‫اﻳﻦ ﺗﻌﺮﻳﻒ ﻣﺴﺘﻘﻴﻤﺎ از ‪ json.org‬و ﺑﺨﺶ ﻓﺎرﺳﻲ آن ﮔﺮﻓﺘﻪ ﺷﺪه اﺳﺖ‪:‬‬ ‫»ﺟﻲﺳﺎن ﻳﺎ‪ JSON (JavaScript Object Notation) ‬ﻳﻚ ﻓﺮﻣﺖ ﺗﺒﺎدل داده ﺳﺒﻚ‪ (lightweight) ‬ﻣﻲﺑﺎﺷﺪ ﻛﻪ ﺧﻮاﻧﺪن و ﻧﻮﺷﺘﻦ‬ ‫آن ﺑﺮاي اﻧﺴﺎن و ﺗﻮﻟﻴﺪ و ﭘﺎرس ﻛﺮدن آن ﺑﺮاي ﻣﺎﺷﻴﻦﻫﺎ آﺳﺎن اﺳﺖ‪ .‬اﻳﻦ زﺑﺎن ﺑﺮ ﻣﺒﻨﺎي ﻳﻚ زﻳﺮ ﻣﺠﻤﻮﻋﻪ از زﺑﺎن ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ‪ ‬‬ ‫‪ ،JavaScript ‬اﺳﺘﺎﻧﺪارد‪ ECMA‐262 ‬وﻳﺮاﻳﺶ ﺳﻮم ‪ -‬دﺳﺎﻣﺒﺮ ‪ ،1999‬اﺳﺖ‪. JSON ‬ﺑﺼﻮرت ﻣﺘﻨﻲ‪ (text) ‬ﺑﻮده و ﻛﺎﻣﻼً ﻣﺴﺘﻘﻞ از زﺑﺎن‬ ‫ﺑﻜﺎر رﻓﺘﻪ اﺳﺖ‪ ،‬اﻣﺎ از ﻗﻮاﻧﻴﻨﻲ اﺳﺘﻔﺎده ﻣﻲﻛﻨﺪ ﻛﻪ ﺑﺮاي ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﺎن زﺑﺎنﻫﺎي ﺧﺎﻧﻮاده‪ C‬ﺷﺎﻣﻞ‪،Perl  ،JavaScript  ،Java  ،C++  ، C ‬‬ ‫‪ ،Python ‬و ﺑﺴﻴﺎري زﺑﺎنﻫﺎي دﻳﮕﺮ آﺷﻨﺎ ﻣﻲﺑﺎﺷﺪ‪ .‬اﻳﻦ ﺧﺼﻮﺻﻴﺎت‪ JSON ‬را ﻳﻚ زﺑﺎن ﺗﺒﺎدلدادهاي اﻳﺪهآل ﻛﺮده اﺳﺖ‪«.‬‬ ‫ﻳﻌﻨﻲ ﭼﻲ؟‬ ‫ﻳﻌﻨﻲ ﺷﻤﺎ ﺑﺎ اﺳﺘﻔﺎده از اﻳﻦ ﻗﺎﻟﺐ‪ ،‬اﻃﻼﻋﺎﺗﺖ رو راﺣﺖ ﺟﺎﺑﻪﺟﺎ ﻛﻨﻲ‪ .‬اﺑﺰاري ﻣﺜﻞ ‪) .XML‬ﻛﻪ اﻟﺒﺘﻪ ﻣﺴﻠﻤﻪ ﻛﻪ ‪ xml‬اﻳﻦ ﺟﻨﮓ رو ﺑﺮد‪ (.‬اﻣﺎ اﮔﻪ‬ ‫اﻳﻦ دوﺳﺘﻤﻮن ﺑﺎزﻧﺪه اﻳﻦ ﺟﻨﮓ اﺳﺖ ﭘﺲ ﺑﺮاي ﭼﻲ ﻣﺎ دارﻳﻢ درﻣﻮردش ﺻﺤﺒﺖ ﻣﻴﻜﻨﻴﻢ؟‬ ‫ﻋﻠﺖ اﻳﻦ اﺳﺖ ﻛﻪ ﻫﻨﻮز در ﻓﻨﺎوري ‪ ، AJAX‬اﻳﻦ ﻓﺮﻣﺖ اﻧﺘﻘﺎل داده ﻛﺎرﺑﺮد ﺑﺴﻴﺎر ﻓﺮاواﻧﻲ دارد‪.‬‬ ‫ﺑﺎ ﻳﻚ ﻣﺜﺎل ﺟﻠﻮ ﻣﻴﺮوﻳﻢ‪:‬‬ ‫‪1‬‬ ‫ﺷﻤﺎ ﻓﺮض ﻛﻨﻴﺪ ﻛﻪ ﻗﺮار اﺳﺖ ﻣﺤﺘﻮﻳﺎت ﻳﻚ ‪ RSS‬ﻫﺮ دو ﺛﺎﻧﻴﻪ ﻳﻜﺒﺎر در ﺻﻔﺤﻪ ‪ view.phtml‬ﻓﺮاﺧﻮاﻧﻲ ﺷﻮد‪ .‬ﻟﺰوﻣﺎ ‪ JS‬ﺑﺎﻳﺪ ﻫﺮ ‪ 2‬ﺛﺎﻧﻴﻪ‬ ‫ﻳﻜﺒﺎر ﺗﻮﺳﻂ ‪ AJAX‬از ﺻﻔﺤﻪ ‪ rss.phpm‬ﻣﺤﺘﻮﻳﺎت ﻓﺎﻳﻞ ‪ rss‬را ﺑﺨﻮاﻫﺪ‪.‬‬ ‫‪rss.phpm‬‬ ‫‪(.*?)#s", $data, $titles‬‬ ‫;)(‪$links = array‬‬ ‫;)‪preg_match_all("#(.*?)#s", $data, $links‬‬ ‫;)"‪ob_start("ob_gzhandler‬‬ ‫;)]‪$cnt = count($links[0‬‬ ‫{ )‪for ($i = 0; $i < $cnt; $i++‬‬ ‫;">‪echo $titles[1][$i] . "
  • " . $links[1][$i] . "?‬

    ‫ﭼﻨﺪ ﻧﻜﺘﻪ ﭘﻴﺮاﻣﻮن ﻛﺪ ﺣﺎﺿﺮ‪:‬‬ ‫اﺳﺘﻔﺎده از ‪ file_get_contents‬در ﭼﻨﻴﻦ ﻣﻮاردي ﺑﺴﻴﺎر ﻣﻔﻴﺪﺗﺮ از اﺳﺘﻔﺎده از ‪ fopen ‬ﻳﺎ ‪ ...‬ﻣﻴﺒﺎﺷﺪ‪.‬‬ ‫اﺳﺘﻔﺎده از ‪ regex‬ﺑﺴﻴﺎر ﺳﺮﻳﻌﺘﺮ ﺗﻮاﺑﻊ ‪ xml‬ﻣﻮﺟﻮد در ‪ php ‬اﺳﺖ‪.‬‬ ‫اﺳﺘﻔﺎده از ‪ output buffering‬ﺑﺴﻴﺎر ﺳﺮﻳﻊ اﺳﺖ و ﻫﻤﭽﻨﻴﻦ اﻳﻦ ﻧﻮع اﺳﺘﻔﺎده ﺑﺎﻋﺚ ﻛﻢ ﺣﺠﻢ ﺷﺪن ﻓﺎﻳﻞ ﺷﻤﺎ ﺧﻮاﻫﺪ ﺷﺪ‪.‬‬ ‫ﺣﺘﻤﺎ ﻓﻀﺎﻫﺎي اﺷﻐﺎل ﺷﺪه را ﺗﻮﺳﻂ ‪ unset‬از ﺑﻴﻦ ﻣﻴﺒﺮﻳﻢ‪.‬‬ ‫اﻣﺎ ﻫﻤﺎﻧﻄﻮر ﻛﻪ ﻣﻴﺒﻴﻨﻴﺪ ﻣﻦ ﻋﻨﺎوﻳﻦ ﺧﺒﺮ را ﺑﺎ ﻋﺒﺎرت >‪ "‪‪<script src="/js/prototype.js" type="text/javascript">"‪<script type="text/javascript‬‬ ‫{)‪function DoCallback(url, data‬‬ ‫‪var xhr = new Ajax.Request(url, {method: 'get', parameters: data, onCompl‬‬ ‫;)}‪ete: showBreak‬‬ ‫}‬ ‫{)(‪function breakNews‬‬ ‫;'‪var BreakUrl='rss.phpm‬‬

    ‫‪                                                             ‬‬ ‫‪JavaScript 1‬‬

    DoCallback(BreakUrl); } function showBreak(xhr){ var items = xhr.responseText.split(""); for(var i = 0; i < 8; i++){ var results = $("last"+i); var item = items[i].split("
  • "); var title = item[0]; var link = item[1]; results.innerHTML = "

    "+title+"

    "; } setTimeout('breakNews()',2000); } setTimeout('breakNews()',2000);










    ‫ و ﺳﭙﺲ ﺑﻪ ﻋﻨﺎوﻳﻦ اﺧﺒﺎر و ﻟﻴﻨﻜﻬﺎي‬.‫ اﻳﻦ رﺷﺘﻪاي ﻛﻪ ﺑﺮاي ﺧﻮد ﻓﺮﺳﺘﺎدم را اﻳﻨﺠﺎ ﻛﻮﭼﻚ و ﻛﻮﭼﻜﺘﺮ ﻛﻨﻢ‬split ‫ﻣﻲ ﺑﻴﻨﻴﺪ ﻛﻪ ﺗﻮﺳﻂ ﺗﺎﺑﻊ‬ .‫آن ﺑﺮﺳﻢ‬ ‫ اﻳﻦ راه ﺣﻞ ﺧﻴﻠﻲ ﻣﻨﺎﺳﺐ‬.‫ اﺳﺖ‬HTML ‫ ﻫﺎي ﮔﻮﮔﻞ ﺗﺎ ﺑﻪ ﺣﺎل ﻧﮕﺎه ﻛﺮدﻳﺪ؟ ﭘﺮ از ﺗﮕﻬﺎي‬rss ‫ ﻣﻦ ﻛﻤﻲ ﭘﻴﭽﻴﺪه ﺗﺮ ﺑﻮد ﭼﻪ؟ ﺑﻪ‬rss ‫اﻣﺎ اﮔﺮ‬ .‫ﻧﻴﺴﺖ‬ ‫ ﻧﻤﻮﻧﻪ اﻳﻨﻜﺎر را‬.‫ ﺑﺨﻮاﻧﻢ‬JS ‫ دﻳﮕﺮ ﺑﻨﻮﻳﺴﻢ و آﻧﺮا ﺗﻮﺳﻂ‬xml ‫ ﻳﻌﻨﻲ اﺧﺒﺎر را در ﻳﻪ ﻓﺎﻳﻞ‬.‫ دﻳﮕﺮي اﺳﺖ‬xml ‫راه ﺣﻞ ﺟﺎﻳﮕﺰﻳﻦ اﺳﺘﻔﺎده از‬ :‫ﺑﺒﻴﻨﻴﺪ‬ http://www‐128.ibm.com/developerworks/library/x‐ajaxrss/index.html  .‫ آﻧﺮا ﻣﻄﺎﻟﻌﻪ ﻛﻨﻴﺪ‬JS ‫ ﻓﻘﻂ ﻛﺪ‬.‫اﮔﺮ ﻧﮕﺎﻫﻲ ﺑﻪ آن ﺑﻴﻨﺪازﻳﺪ ﻣﺘﻮﺟﻪ ﻣﻴﺸﻮﻳﺪ ﻛﻪ اﻳﻦ راه ﺣﻞ ﻫﻢ ﭘﺮ از دردﺳﺮ اﺳﺖ‬ ‫ دﻗﻴﻘﺎ ﻟﻘﻤﻪ ﻳﻜﺒﺎر دور ﺳﺮ ﺷﻤﺎ‬.‫ ﻛﺮدهاﻳﺪ و در ﻓﺎﻳﻠﻲ دﻳﮕﺮ ﻧﻮﺷﺘﻪ اﻳﺪ و ﺳﭙﺲ آﻧﺮا ﻣﻴﺨﻮاﻧﻴﺪ‬parse ‫ را‬xml ‫ﺷﻤﺎ در ﺣﻘﻴﻘﺖ ﻳﻚ ﻓﺎﻳﻞ‬ ‫ﭘﻴﭽﻴﺪه ﺷﺪه اﺳﺖ! اﻣﺎ راه ﺣﻞ ﺟﺎﻳﮕﺰﻳﻦ دﻳﮕﺮي ﺳﺮاغ دارﻳﺪ؟‬

    ‫ ﻗﻬﺮﻣﺎﻧﺎﻧﻪ وارد ﺻﺤﻨﻪ ﻣﻴﺸﻮد‬JSON ‫ و‬. . . :‫ﻣﻦ ﻓﺎﻳﻞ ﻫﺎ ﺑﻪ ﺷﻴﻮه زﻳﺮ ﺗﻐﻴﻴﺮ ﻣﻴﺪﻫﻢ‬ rss.phpm (.*?)#s", $data, $titles); $links = array(); preg_match_all("#(.*?)#s", $data, $links); ob_start("ob_gzhandler"); $cnt = count($links[0]); $break = array(); for ($i = 0; $i < $cnt; $i++) { $break[$i] = array('title' => $titles[1][$i], 'link' => $links[1][$i] ); } unset($titles); unset($links); header("content-type:application/json"); echo json_encode($break); ?> 

    ‫ﻫﻤﺎﻧﻄﻮرﻛﻪ ﻣﻴﺒﻴﻨﻴﺪ ﺗﻐﻴﻴﺮ زﻳﺎدي ﻧﺪاﺷﺘﻴﻢ ﺑﺠﺰ اﻳﻨﻜﻪ‪:‬‬ ‫اﺧﺒﺎر را در آراﻳﻪ ﻗﺮار ﻣﻴﺪﻫﻴﻢ‪.‬‬ ‫ﻣﻴﮕﻮﻳﻴﻢ اﻳﻦ ﻓﺎﻳﻞ از ﻧﻮع ‪ application/json‬ﻣﻴﺒﺎﺷﺪ‪.‬‬ ‫و اﺳﺘﻔﺎده از ﺗﺎﺑﻌﻲ ﻛﻪ در ‪ PECL‬ﻣﻮﺟﻮد اﺳﺖ‪ .‬ﻧﮕﺮان ﻧﺒﺎﺷﻴﺪ‪ .‬اﮔﺮ ﻧﻤﻴﺘﻮاﻧﻴﺪ از ‪ PECL ‬اﺳﺘﻔﺎده ﻛﻨﻴﺪ ﺑﻪ ﻟﻴﻨﻚ ﭘﺎﻳﻴﻦ ﻧﮕﺎﻫﻲ ﺑﻴﻨﺪازﻳﺪ‪:‬‬ ‫‪http://gggeek.altervista.org/sw/article_20061113.html ‬‬ ‫ﻣﻦ ﺻﺮﻓﺎ ﻓﻘﻂ ﺑﻪ اﻳﻦ ﺧﺎﻃﺮ از ‪ PECL‬اﺳﺘﻔﺎده ﻛﺮدم ﻛﻪ ﺳﺮﻋﺘﺶ ﺑﻴﺸﺘﺮه‪ .‬ﺑﻪ ﻟﻴﻨﻚ ﺑﺎﻻ ﺣﺘﻤﺎ ﻧﮕﺎه ﻛﻨﻴﺪ‪.‬‬ ‫و اﻣﺎ ﻓﺎﻳﻞ ‪ .view.phtml‬ﻓﻘﻂ ﺗﺎﺑﻊ زﻳﺮ را ﺑﻪ ﺷﻜﻞ ﺟﺪﻳﺪ ﺗﻐﻴﻴﺮ دﻫﻴﺪ‪:‬‬ ‫{)‪function showBreak(xhr‬‬ ‫;)(‪var items = new Array‬‬ ‫;)')'‪eval('items = ('+xhr.responseText+‬‬ ‫{)‪for(var i = 0; i < 8; i++‬‬ ‫;)‪var results = $("last"+i‬‬ ‫;]‪var item = items[i‬‬ ‫;]'‪var title = item['title‬‬ ‫; ]'‪var link = item['link‬‬ ‫;">‪results.innerHTML = "

    "+title+"
    ‫اﻣﺘﺤﺎن ﻛﻨﻴﺪ و ﻟﺬت ﺑﺒﺮﻳﺪ‪.‬‬ ‫اﻳﻦ روش ﺑﺴﻴﺎر ﺳﺮﻳﻌﺘﺮ از ﺑﻘﻴﻪ راه ﺣﻠﻬﺎي ﻣﻮﺟﻮد اﺳﺖ و ﺑﺴﻴﺎري از ﺳﺎﻳﺘﻬﺎ از اﻳﻦ روش اﺳﺘﻔﺎده ﻣﻴﻜﻨﻨﺪ‪.‬‬ ‫اﻳﻦ روش وﺣﻲ ﻣﻨﺰل ﻧﻴﺴﺖ اﻣﺎ اﮔﺮ ﺑﻪ ﺳﺎدﮔﻲ و ﺳﺮﻋﺖ ﺑﺎﻻ ﻧﻴﺎز دارﻳﺪ اﺻﻼ وﻗﺖ ﺧﻮد را ﺗﻠﻒ ﻧﻜﻨﻴﺪ‪.‬‬ ‫ﺣﺘﻤﺎ اﻳﻦ روش را ﺑﺎ روش ‪ xml‬ﻛﻪ ﻟﻴﻨﻚ آن آﻣﺪه ﻣﻘﺎﻳﺴﻪ ﻛﻨﻴﺪ ﺗﺎ ﺑﻪ ﻣﺰاﻳﺎي آن ﭘﻲ ﺑﺒﺮﻳﺪ!‬ ‫ﺣﺘﻤﺎ ﻟﻴﻨﻜﻲ ﻛﻪ ﺑﻪ ﺑﺮرﺳﻲ ﺗﻮاﺑﻊ ﻣﺨﺘﻠﻒ ﻛﻪ ﺑﺼﻮرت ‪ JSON‬ﺗﺒﺪﻳﻞ ﻣﻴﻜﻨﻨﺪ ﻧﮕﺎه ﻛﻨﻴﺪ‪.‬‬ ‫و ﭼﻨﺪ ﻧﻜﺘﻪ در آﺧﺮ‪:‬‬ ‫اﺳﺘﻔﺎده از ﭘﺴﻮﻧﺪ ‪ .phpm‬در ﻣﺪل ‪ MVC‬ﺑﺮاي ﻓﺎﻳﻞ ﻫﺎي ‪ Model‬ﻣﺮﺳﻮم اﺳﺖ و اﺳﺘﻔﺎده از ﭘﺴﻮﻧﺪ ‪ .phtml‬ﺑﺮاي ﻓﺎﻳﻠﻬﺎي ‪ View‬ﻳﺎ‬ ‫‪ .Controller‬اﻣﺎ دﻗﺖ ﻛﻨﻴﺪ ﺑﺮاي اﺟﺮاي اﻳﻦ ﻓﺎﻳﻞ ﻫﺎ ﺑﺎﻳﺪ ﻛﻤﻲ در ﺗﻨﻈﻴﻤﺎت ‪ Apache‬دﺳﺖ ﺑﺒﺮﻳﺪ ﻳﺎ اﺻﻼ ﺑﺨﻮد زﺣﻤﺖ ﻧﺪﻫﻴﺪ و از‬ ‫ﻫﻤﺎن ﭘﺴﻮﻧﺪ ‪ .php‬اﺳﺘﻔﺎده ﻛﻨﻴﺪ‪.‬‬ ‫ﻣﻦ ﺑﺮاي اﺳﺘﻔﺎده از ‪ AJAX‬از ﺑﺴﺘﻪ ‪ prototype‬اﺳﺘﻔﺎده ﻛﺮدم‪.‬‬ ‫اﻣﻴﺪوارم اﻳﻦ ﻣﻮﺿﻮع در ﺑﺮﻧﺎﻣﻪ ﻫﺎي ‪ AJAX‬ﺷﻤﺎ ﻛﺎرﺑﺮد داﺷﺘﻪ ﺑﺎﺷﻪ‪.‬‬ ‫ﻫﺮ ﺳﻮاﻟﻲ داﺷﺘﻴﺪ در اﻧﺠﻤﻦ ‪ IranPHP‬ﺑﭙﺮﺳﻴﺪ‪.‬‬ ‫ﻳﺎﻋﻠﻲ‬

    ‫‪ ‬‬


  • Related Documents

    Json
    December 2019 6
    Json
    November 2019 4