நவம்பர் 07, 2012

அறிந்து கொள்ளுங்கள் JSON

இப்பதிவு தகவல் பறிமாற்றத்தில் JSONன் பங்கு கட்டுரையின் தொடர்ச்சி.

ஜாவாஸ்கிரிப்ட்டில் நமக்கு வேண்டிய ஆப்ஜெக்டுகளை எளிதில் உருவாக்கலாம்.  சி++, ஜாவா, சி# போன்ற புரொகிராமிங் மொழிகளில் ஆப்ஜெக்டுகளை உருவாக்க பிரத்யேக classகளை எழுதவேண்டும்.  எடுத்துகாட்டிற்கு ஒரு பூனையைக் குறிக்கும் ஆப்ஜெக்ட்டை உருவாக்க Cat class எழுதப்படவேண்டும்.  ஜாவாஸ்கிரிப்ட்டில் classகள் கிடையாது.  ஒரு ஆப்ஜெக்ட்டை initialize செய்ய உதவும் constructor மெத்தட்களை நேரடியாகப் பயன்படுத்திக் கொள்ளலாம்.
function Cat(name,colour) {
   this.name = name;
   this.colour = colour;
}
var tom = new Cat('Tom','Gray Blue');
alert("Tom's colour is " + tom.colour);
Valid JSON code is a valid javascript code but the reverse is not true.  அதாவது JSON விதிமுறைப்படி எழுதப்பட்ட எந்தஒரு கட்டளை வரியும், சரியாக இயங்கக் கூடிய ஜாவாஸ்கிரிப்ட்டே.  ஆனால் அனைத்து ஜாவாஸ்கிரிப்ட் கட்டளைகளும் JSON எனச் சொல்லிவிட முடியாது.  இதிலிருந்து JSON என்பது ஒரு புரொகிராமிங் மொழி இல்லை என்பது தெளிவாகிறது.  இது தகவல் பறிமாற்றத்திற்கான ஒரு வரையறை (standard for data exchange) அவ்வளவுதான்.

முக்கியமாக நாம் தெரிந்து வைத்திருக்க வேண்டியது, ஜாவாஸ்கிரிப்ட்டில் array மற்றும் objectஐ எவ்வாறு கையாள்வது என்பதுதான்.  எல்லா JSON வடிவ தகவல்களும் ஜாவாஸ்கிரிப்ட் arrayவையும், ஜாவாஸ்கிரிப்ட் objectடையும் கொண்டே எழுதப் பட்டிருக்கும்.
array  - [] இரு அடைப்புக் குறிக்குள் எழுதவேண்டும்
    var fruits = [”மா”,”பலா”,”வாழை”] 
    var names  = ['rajkumar','nrs']
    var numbers= [32,442,442,332,44,223]
    var array_of_arrays = [['tom','jerry'],['poppeye','olive']]
array_of_arrays[o][1] --> ‘jerry' விடையைத் தரும். முதலாவது arrayவிலுள்ள இரண்டாவது உறுப்பினரைக் குறிக்கிறது.

object - {}     இரு code block (நிரல் தொகுப்பு) அடைப்புக் குறிக்குள் எழுதவேண்டும். name:value பண்புகளாக (property) அதன் உறுப்பினர்கள் இருக்கும்.
    var user= {'name' : 'rajkumar',
               'age':27,
               'interests':['education','technology','writing']
              }
    user variableக்கு assign செய்திருப்பது ஒரு ஆப்ஜெக்ட் என்பதை { } அடைப்புக் 
    குறிகள் குறிக்கின்றன.  

    user ஆப்ஜெக்டின் interests உறுப்பினர் ஒரு arrayவைக் குறிப்பதனால் arrayவை 
    எப்படி அணுகுவோமோ அப்படியே செய்து கொள்ளலாம்.

    alert('current selection is ' + user.interests[1]);  technology என்பதை 
    விடையாகத் தரும் 

எடுத்துகாட்டாக டிவிட்டர், கூகுள் தளத்திலிருந்து வெளிவரும் JSON தகவல் இதோ
 https://twitter.com/tamilcpu.json
   //var data = {"errors":[{"message":"Sorry, that page does not exist","code":34}]}
   $.get('https://twitter.com/tamilcpu.json', function(data) {
      console.log('error code '  + data.errors[0].code)
   });

https://www.googleapis.com/blogger/v2/blogs/tamilcpu/posts
 
var jsonresponse ={
                   "error": {
                        "errors": [
                                   {
                                     "domain": "usageLimits",
                                     "reason": "dailyLimitExceededUnreg",
                                     "message": "Daily Limit for Unauthenticated Use
                                                 Exceeded. Continued use requires 
                                                 signup.",
                                      "extendedHelp":                        
                                               "https://code.google.com/apis/console"
                                   }
                                 ],
                       "code": 403,
                       "message": "Daily Limit for Unauthenticated Use Exceeded. 
                                  Continued use requires signup."
                       }
                  }
console.log(jsonresponse.error.message)  -- > Daily Limit for Unauthenticated Use Exceeded. 
Continued use requires signup. என்பதை விடையாகத் தரும்.  

error ஆப்ஜெக்டுக்குள் இருக்கும் errors arrayவை அணுகுவதற்கு அதற்கான array indexசை 
குறிப்பிட வேண்டும்.

console.log(jsonresponse.error.errors[0].reason)