ജെസൺ

ഡാറ്റാ കൈമാറ്റത്തിനായി ഉപയോഗിക്കുന്നതും, മനുഷ്യർക്കു കൂടി വായിച്ചുമനസ്സിലാക്കുവാൻ പറ്റുന്നതുമായുള്ള ഒരു എഴുത്തുരീതിയാണ് ജെസൺ.  **ജാവാസ്ക്രിപ്റ്റ് ഒബജക്റ്റ് നോട്ടേഷൻ** എന്നാണ് പൂർണ്ണരൂപം. ജാവാസ്ക്രിപ്റ്റ് ഒബ്ജക്റ്റ് നൊട്ടേഷൻ(JSON, ഉച്ചരിക്കുന്നത് / ˈdʒeɪsən /; കൂടാതെ / ˈdʒeɪˌsɒn / [കുറിപ്പ് 1]) ഒരു ഓപ്പൺ സ്റ്റാൻഡേർഡ് ഫയൽ ഫോർമാറ്റാണ്, ഇത് ജാവാസ്ക്രിപ്റ്റ് പ്രോഗ്രാമിങ്ങ് ഭാഷയെ അടിസ്ഥാനമാക്കി നിർമ്മിച്ചതാണ്.അജാക്സ് സിസ്റ്റങ്ങളിൽ എക്സ്എം‌എല്ലിന് പകരമായി ഉപയോഗിക്കുന്ന വൈവിധ്യമാർന്ന ആപ്ലിക്കേഷനുകൾ ഉള്ള വളരെ സാധാരണമായ ഒരു ഡാറ്റ ഫോർമാറ്റാണ് ഇത്.

ജെസൺ ഒരു സ്വതന്ത്ര-ഭാഷ ഡാറ്റ ഫോർമാറ്റാണ്. ഇത് ജാവാസ്ക്രിപ്റ്റിൽ നിന്ന് ഉരുത്തിരിഞ്ഞതാണ്, പക്ഷേ പല ആധുനിക പ്രോഗ്രാമിംഗ് ഭാഷകളിലും ജെസൺ ഫോർമാറ്റ് ഡാറ്റ സൃഷ്ടിക്കുന്നതിനും പാഴ്സ് ചെയ്യുന്നതിനുള്ള കോഡ് ഉൾപ്പെടുന്നു. application/json എന്നതാണ് ഇതിന്റെ ഔദ്യോഗിക ഇന്റർനെറ്റ് മീഡിയ പ്രതിനിധീകരണം. ജെസൺ ഫയൽനാമങ്ങൾ .json എന്ന എക്സ്റ്റഷൻ ഉപയോഗിക്കുന്നു.

ഡഗ്ലസ് ക്രോക്ക്ഫോർഡ് ആദ്യം ജെസൺ ഫോർമാറ്റ് അവതരിപ്പിച്ചത് 2000 ത്തിന്റെ തുടക്കത്തിലാണ്. ജെസൺ ആദ്യമായി ഇഗ്മാ-404(ECMA-404)ആയി 2013 ൽ സ്റ്റാൻഡേർഡ് ചെയ്തു.2017 ൽ പ്രസിദ്ധീകരിച്ച ആർഎഫ്സി, ഇൻറർ‌നെറ്റ് സ്റ്റാൻ‌ഡേർഡ് STD 90യുടെ നിലവിലെത്തെ പതിപ്പാണ്, മാത്രമല്ല ഇത് ഇഗ്മാ-404 യുമായി പൊരുത്തപ്പെടുന്നു. അതേ വർഷം തന്നെ, ജെസണിനെ ISO / IEC 21778: 2017 ആയി സ്റ്റാൻഡേർഡ് ചെയ്തു. ഇഗ്മാ, ഐ‌എസ്ഒ മാനദണ്ഡങ്ങൾ‌ അനുവദനീയമായ വാക്യഘടനയെ കുറിച്ചു മാത്രമേ വിവരിക്കുകയുള്ളൂ, അതേസമയം ആർ‌എഫ്‌സി സുരക്ഷയെപ്പറ്റിയും പരസ്പരപ്രവർത്തനക്ഷമതക്കുള്ള പരിഗണനകളും ഉൾക്കൊള്ളുന്നു. 
## ചരിത്രം

2000-ത്തിന്റെ തുടക്കത്തിൽ ഉപയോഗിച്ച പ്രധാന രീതികളായ ഫ്ലാഷ് അല്ലെങ്കിൽ ജാവ ആപ്‌ലെറ്റുകൾ പോലുള്ള ബ്രൗസർ പ്ലഗിനുകൾ ഉപയോഗിക്കാതെ സ്റ്റേറ്റ് ലെസ്, തത്സമയ സെർവർ-ടു-ബ്രൗസർ കമ്മ്യൂണിക്കേഷൻ പ്രോട്ടോക്കോൾ ആവശ്യകതയിൽ നിന്നാണ് ജെസൺ വികസിപ്പിച്ചെടുത്തത്.

ഡഗ്ലസ് ക്രോക്ക്ഫോർഡ് ആദ്യം ജെസൺ ഫോർമാറ്റ് നൽകുകയും,അതിനെ ജനപ്രിയമാക്കുകയും ചെയ്തു.  ക്രോക്ക്ഫോർഡും മറ്റുള്ളവരും ചേർന്ന് 2001 മാർച്ചിൽ സ്ഥാപിച്ച സ്റ്റേറ്റ് സോഫ്റ്റ്വെയർ എന്ന കമ്പനിയിൽ നിന്നാണ് ജെസൺ(JSON) ചുരുക്കെഴുത്ത് ലഭ്യമായത്. സ്റ്റാൻഡേർഡ് ബ്രൗസർ കഴിവുകൾ ഉപയോഗിക്കുന്ന ഒരു സിസ്റ്റം നിർമ്മിക്കാൻ സഹസ്ഥാപകർ സമ്മതിക്കുകയും ചെയ്തു. സാധാരണ ബ്രൗസർ സമയപരിധിക്ക് മുമ്പ് കൂടുതൽ ഡാറ്റ കൈമാറ്റം ചെയ്യപ്പെടുന്നില്ലെങ്കിൽ രണ്ട് ഹൈപ്പർടെക്സ്റ്റ് ട്രാൻസ്ഫർ പ്രോട്ടോക്കോൾ (എച്ച്ടിടിപി) കണക്ഷനുകൾ തുറന്ന് പുനരുപയോഗിക്കുന്നു. ഒരു വെബ് സെർവറിലേക്ക് സ്ഥിരമായ ഡ്യുപ്ലെക്സ് കണക്ഷനുള്ള സ്റ്റേറ്റ്ഫുൾ വെബ് ആപ്ലിക്കേഷനുകൾ സൃഷ്ടിക്കുന്നതിന് വെബ് ഡെവലപ്പർമാർക്ക് ഒരു അബ്സ്ട്രാക്ഷൻ ലേയർ നൽകുകയും ചെയ്തു. സഹസ്ഥാപകർ ഒരു റൗണ്ട്-ടേബിൾ ചർച്ച നടത്തി, ഡാറ്റാ ഫോർമാറ്റിനെ ജെഎസ്എംഎൽ(JSML) അല്ലെങ്കിൽ ജെസൺ എന്ന് വിളിക്കണമെന്നും അതുപോലെ തന്നെ ഏത് തരം ലൈസൻസാണ്  ലഭ്യമാക്കേണ്ടതെന്നും വോട്ടുചെയ്തു. ജെസൺ ലൈബ്രറികൾ ഓപ്പൺ സോഴ്‌സ് ചെയ്യുന്നതിനായി ക്രോക്ക്ഫോർഡ് ജെസൺ ലൈസൻസിൽ "സോഫ്റ്റ്‌വെയർ നല്ലതിന് വേണ്ടിയാണ്, അല്ലാതെ തിന്മയ്ക്ക് വേണ്ടിയല്ല ഉപയോഗിക്കേണ്ടത്" എന്ന് വ്യക്തമാക്കി. സ്റ്റേറ്റ് സോഫ്റ്റ്വെയറിലെ സ്റ്റേറ്റ് ആപ്ലിക്കേഷൻ ഫ്രെയിംവർക്കിനായി ചിപ്പ് മോർണിംഗ്സ്റ്റാർ ആശയം വികസിപ്പിച്ചു. മറുവശത്ത്, ഈ ഉപാധി മറ്റ് ഓപ്പൺ സോഴ്‌സ് ലൈസൻസുകളുമായി ജെസൺ ലൈസൻസിനെ ലൈസൻസ് കംപാറ്റിബിലിറ്റി പ്രശ്‌നങ്ങളിലേക്ക് നയിച്ചു.

കമ്മ്യൂണിറ്റി.കോമിലെ കാർട്ടൂൺ ഓർബിറ്റ് എന്ന കുട്ടികളുടെ ഡിജിറ്റൽ അസറ്റ് ട്രേഡിംഗ് ഗെയിം പ്രോജക്റ്റിൽ ജെസൺ ലൈബ്രറികളുടെ ഒരു മുന്നോടിയായി(precursor) ഉപയോഗിച്ചു.(സംസ്ഥാന സഹസ്ഥാപകർ എല്ലാവരും മുമ്പ് ഈ കമ്പനിയിൽ പ്രവർത്തിച്ചിരുന്നു) ഇത് ഒരു ബ്രൗസർ സൈഡ് പ്ലഗ്-ഇൻ ഉപയോഗിച്ചു ഡി‌എച്ച്‌ടി‌എം‌എൽ ഘടകങ്ങൾ കൈകാര്യം ചെയ്യുന്നതിനുള്ള ഒരു പ്രൊപ്രൈറ്ററി മെസേജിംഗ് ഫോർമാറ്റ് (ഈ സിസ്റ്റം 3DO യുടെ ഉടമസ്ഥതയിലുള്ളതാണ്)തയ്യാറാക്കി. ആദ്യകാല അജാക്സ് കഴിവുകൾ കണ്ടെത്തിയതിനുശേഷം, ഡിജിഗ്രൂപ്പുകൾ, നൂഷും, മറ്റുള്ളവയും ചേർന്ന് ഒരു വെബ് ആപ്ലിക്കേഷന്റെ വിഷ്വൽ സന്ദർഭം പുതുക്കാതെ ഉപയോക്തൃ ബ്രൗസറുകളുടെ വിഷ്വൽ ഫീൽഡിലേക്ക് വിവരങ്ങൾ കൈമാറാൻ ഫ്രെയിമുകൾ ഉപയോഗിച്ചു, നെറ്റ്‌സ്കേപ് 4.0.5+, IE 5+ എന്നിവയുടെ സ്റ്റാൻഡേർഡ് എച്ച്ടിടിപി, എച്ച്ടിഎംഎൽ, ജാവാസ്ക്രിപ്റ്റ് കഴിവുകൾ മാത്രം ഉപയോഗിച്ച് തത്സമയ വെബ് ആപ്ലിക്കേഷനുകൾ തിരിച്ചറിയപ്പെട്ടു. അത്തരമൊരു സിസ്റ്റത്തിനായി ഒബ്‌ജക്റ്റ് അധിഷ്‌ഠിത സന്ദേശമയയ്‌ക്കൽ ഫോർമാറ്റായി ജാവാസ്ക്രിപ്റ്റ് ഉപയോഗിക്കാമെന്ന് ക്രോക്ക്ഫോർഡ് കണ്ടെത്തി. ഈ സംവിധാനം സൺ മൈക്രോസിസ്റ്റംസ്, ആമസോൺ.കോം, ഇഡിഎസ് എന്നിവയ്ക്ക് വിറ്റു. JSON.org  വെബ്സൈറ്റ് 2002 ൽ സമാരംഭിച്ചു. 2005 ഡിസംബറിൽ യാഹൂ! ജെസണിൽ അതിന്റെ ചില വെബ് സേവനങ്ങൾ വാഗ്ദാനം ചെയ്യാൻ തുടങ്ങി. 

ജെസൺ ജാവാസ്ക്രിപ്റ്റ് സ്ക്രിപ്റ്റിംഗ് ഭാഷയുടെ ഒരു ഉപസെറ്റിനെ അടിസ്ഥാനമാക്കിയുള്ളതാണ് (പ്രത്യേകിച്ചും, സ്റ്റാൻഡേർഡ് ഇസി‌എം‌എ -262 മൂന്നാം പതിപ്പ് - ഡിസംബർ 1999 ), ഇത് സാധാരണയായി ജാവാസ്ക്രിപ്റ്റിനൊപ്പം ഉപയോഗിക്കുന്നു, പക്ഷേ ഇത് ഒരു സ്വതന്ത്ര-ഭാഷ ഡാറ്റാ ഫോർമാറ്റാണ്. ജെസൺ ഡാറ്റ പാഴ്‌സുചെയ്യുന്നതിനും സൃഷ്‌ടിക്കുന്നതിനുമുള്ള കോഡ് പല പ്രോഗ്രാമിംഗ് ഭാഷകളിലും എളുപ്പത്തിൽ ലഭ്യമാണ്. ജെസണിന്റെ വെബ്‌സൈറ്റ് ജെസൺ ലൈബ്രറികളെ ഭാഷ പ്രകാരം ലിസ്റ്റ് ചെയ്യുന്നു.

ജെസൺ ആദ്യം പരസ്യം ചെയ്യപ്പെട്ടിരുന്നുവെങ്കിലും ജാവാസ്ക്രിപ്റ്റിന്റെയും ഇഗ്മാസ്ക്രിപ്റ്റിന്റെയും കർശനമായ ഉപവിഭാഗമാണെന്ന് വിശ്വസിക്കപ്പെട്ടിരുന്നുവെങ്കിലും, ഇത് അശ്രദ്ധമായി ജാവാസ്ക്രിപ്റ്റിലും ഇഗ്മാസ്ക്രിപ്റ്റ് സ്ട്രിംഗ് ലിറ്ററലുകളിലും നിയമവിരുദ്ധമായ സ്ട്രിംഗുകളിൽ ഒഴിവാക്കപ്പെടാത്ത ചില പ്രതീകങ്ങളെ അനുവദിച്ചു. ഭാഷയുടെ 2019 ലെ പുനരവലോകന പ്രകാരം ജെസൺ ഇഗ്മാസ്ക്രിപ്റ്റിന്റെ കർശന ഉപവിഭാഗമായി മാറി. ഡാറ്റ പോർട്ടബിലിറ്റി പ്രശ്നങ്ങൾ അറിയാൻ ചുവടെ കൊടുത്തിരിക്കുന്നത് കാണുക.

2013 ഒക്ടോബറിൽ ഇഗ്മാ ഇന്റർനാഷണൽ അതിന്റെ ജെസൺ സ്റ്റാൻഡേർഡ് ഇഗ്മാ-404(ECMA-404) ന്റെ ആദ്യ പതിപ്പ് പ്രസിദ്ധീകരിച്ചു. അതേ വർഷം,  ഒരു റഫറൻസായി ഇഗ്മാ-404 ഉപയോഗിച്ചു. 2014 ൽ, ,  എന്നിവ മറികടന്ന് , ജെ‌എസിന്റെ ഇൻറർനെറ്റ് ഉപയോഗത്തിനായുള്ള പ്രധാന റഫറൻസായി മാറി(പക്ഷേ ഇഗ്മാ-262, ഇഗ്മാ-404 എന്നിവ പ്രധാന റഫറൻ‌സുകളായി സംരക്ഷിക്കുന്നു). നവംബർ 2017, ഐ‌എസ്ഒ / ഐ‌ഇ‌സി ജെ‌ടി‌സി 1 / എസ്‌സി 22 ഐ‌എസ്ഒ / ഐ‌ഇ‌സി 21778: 2017 [1] ഒരു അന്താരാഷ്ട്ര നിലവാരമായി പ്രസിദ്ധീകരിച്ചു. 13 ഡിസംബർ 2017 ന്, ഇന്റർനെറ്റ് സ്റ്റാൻഡേർഡ് എസ്ടിഡി 90 യുടെ നിലവിലെ പതിപ്പായ  പ്രസിദ്ധീകരിച്ചപ്പോൾ ഇൻറർ‌നെറ്റ് എഞ്ചിനീയറിംഗ് ടാസ്ക് ഫോഴ്സ്  കാലഹരണപ്പെട്ടു.

കോർപ്പറേറ്റ് അഭിഭാഷകരെയും പെൻഡാറ്റിക്കായ(pedantic-ചെറിയ വിശദാംശങ്ങളും നിയമങ്ങളും അല്ലെങ്കിൽ അക്കാദമിക് പഠനം നടത്തുന്നതിനായി അമിതമായി ശ്രദ്ധിക്കുന്ന ഒരു വ്യക്തി.) ആളുകളെയും പരിഹസിക്കുന്നതിനിടയിൽ ജെസൺ ലൈബ്രറികൾ ഓപ്പൺ സോഴ്‌സ് ചെയ്യുന്നതിനായി ക്രോക്ക്ഫോർഡ് ജെസൺ ലൈസൻസിൽ "സോഫ്റ്റ്‌വെയർ നല്ലതിനല്ല, തിന്മയല്ല ഉപയോഗിക്കേണ്ടത്" എന്ന് വ്യക്തമാക്കുന്നു. മറുവശത്ത്, ഈ ഉപാധി മറ്റ് ഓപ്പൺ സോഴ്‌സ് ലൈസൻസുകളുമായുള്ള ജെസൺ ലൈസൻസിന്റെ ലൈസൻസ് അനുയോജ്യതാ പ്രശ്‌നങ്ങളിലേക്ക് നയിച്ചു, കാരണം ഓപ്പൺ സോഴ്‌സ് സോഫ്റ്റ്വെയറും സ്വതന്ത്ര സോഫ്റ്റ്‌വെയറും സാധാരണയായി ഉപയോഗ ഉദ്ദേശ്യങ്ങൾക്ക് യാതൊരു നിയന്ത്രണവുമില്ല.

## വാക്യഘടന
ഇനിപ്പറയുന്ന ഉദാഹരണം ഒരു വ്യക്തിയെ വിവരിക്കുന്ന ഒരു ജെസൺ പ്രാതിനിധ്യം കാണിക്കുന്നു.

```json
{
  "firstName": "John",
  "lastName": "Smith",
  "isAlive": true,
  "age": 27,
  "address": {
    "streetAddress": "21 2nd Street",
    "city": "New York",
    "state": "NY",
    "postalCode": "10021-3100"
  },
  "phoneNumbers": [
    {
      "type": "home",
      "number": "212 555-1234"
    },
    {
      "type": "office",
      "number": "646 555-4567"
    }
  ],
  "children": [],
  "spouse": null
}
```

### ക്യാരക്ടർ എൻകോഡിംഗ്
ഇഗ്മാസ്ക്രിപ്റ്റിന്റെയും കർശനമായ ഉപവിഭാഗമാണെന്ന് ക്രോക്ക്ഫോർഡ് ആദ്യം വാദിക്കുകയും വിശ്വസിക്കുകയും ചെയ്തിരുന്നുവെങ്കിലും, സാധുവല്ലാത്ത ജാവാസ്ക്രിപ്റ്റ് സാധുവായ ജെസൺ പ്രമാണങ്ങളെ അതിന്റെ സവിശേഷത അനുവദിക്കുന്നു; യു‌കോഡ് ലൈൻ‌ ടെർ‌മിനേറ്ററുകളായ ,  എന്നിവ ഉദ്ധരിച്ച സ്‌ട്രിംഗുകളിൽ‌ ഒഴിവാക്കാതെ ദൃശ്യമാകാൻ ജെസൺ അനുവദിക്കുന്നു, അതേസമയം ഇഗ്മാസ്ക്രിപ്റ്റ് 2018 ഉം അതിലും പഴയതും അനുവദിക്കുന്നില്ല.ജെസൺ "നിയന്ത്രണ പ്രതീകങ്ങൾ" മാത്രം അനുവദിക്കാത്തതിന്റെ അനന്തരഫലമാണിത്. പരമാവധി പോർട്ടബിലിറ്റിക്കായി, ഈ പ്രതീകങ്ങൾ ബാക്ക്‌സ്ലാഷ്-എസ്കേപ്പെഡ് ആണ്. ജെസൺപി(JSONP) സൃഷ്ടിക്കുമ്പോൾ ഈ സൂക്ഷ്മത പ്രധാനമാണ്.

ഒരു തുറന്ന ഇക്കോസിസ്റ്റത്തിലെ ജെസൺ എക്സ്ചേഞ്ച് യുടിഎഫ്-8 ൽ എൻ‌കോഡുചെയ്‌തിരിക്കണം. ബഹുഭാഷാ അടിസ്ഥാനത്തിലുള്ള പ്ലെയിനിന് (U + 10000 മുതൽ U + 10FFFF വരെ) പ്രതീകങ്ങൾ ഉൾപ്പെടെ പൂർണ്ണ യൂണികോഡ് ക്യാരക്ടർ സെറ്റിനെ എൻകോഡിംഗ് പിന്തുണയ്ക്കുന്നു. എന്നിരുന്നാലും, അത് എസ്കേപ് ചെയ്യുകയാണെങ്കിൽ, ചില ജെസൺ പാഴ്‌സറുകൾ‌ നഷ്‌ടപ്പെടുത്തി യു‌ടി‌എഫ്-16 സറോഗേറ്റ് ജോഡികൾ‌ ഉപയോഗിച്ചാണ് ആ പ്രതീകങ്ങൾ‌ എഴുതേണ്ടത്. ഉദാഹരണത്തിന്, ജെസണിൽ ഇമോജി പ്രതീകം U + 1F610 😐 ന്യൂട്രൽ ഫേസ് ഉൾപ്പെടുത്തുന്നത് എങ്ങനെയെന്ന് താഴെ പ്രതിപാദിക്കുന്നു:

```javascript
{ "face": "😐" }
// or
{ "face": "\uD83D\uDE10" }
```

### ഡാറ്റ ടൈപ്പുകൾ
ജെസണിന്റെ അടിസ്ഥാന ഡാറ്റാ തരങ്ങൾ ഇവയാണ്:
*നമ്പർ: സൈൻഡ് ദശാംശ സംഖ്യയിൽ ഒരു ഭിന്ന ഭാഗം അടങ്ങിയിരിക്കാം, എക്‌സ്‌പോണൻഷ്യൽ ഇ നൊട്ടേഷൻ ഉപയോഗിക്കാം, പക്ഷേ നാൻ(NaN-not a number) പോലുള്ള അക്കങ്ങളല്ലാത്തവ ഉൾപ്പെടുത്താൻ കഴിയില്ല. ഫോർമാറ്റ് സംഖ്യയും ഫ്ലോട്ടിംഗ് പോയിന്റും തമ്മിൽ വ്യത്യാസമില്ല. ജാവാസ്ക്രിപ്റ്റ് അതിന്റെ എല്ലാ സംഖ്യാ മൂല്യങ്ങൾക്കും ഇരട്ട-കൃത്യതയുള്ള ഫ്ലോട്ടിംഗ്-പോയിന്റ് ഫോർമാറ്റ് ഉപയോഗിക്കുന്നു (പിന്നീട് ബിഗ്ഇന്റിനെ പിന്തുണയ്ക്കുന്നു ), പക്ഷേ ജെസൺ നടപ്പിലാക്കുന്ന മറ്റ് ഭാഷകൾക്ക് വ്യത്യസ്തമായ നമ്പറുകൾ എൻ‌കോഡുചെയ്യാം.
* സ്ട്രിംഗ്: പൂജ്യമോ അതിലധികമോ യൂണിക്കോഡ് പ്രതീകങ്ങളുടെ ഒരു ശ്രേണി. സ്ട്രിംഗുകൾ ഇരട്ട-ഉദ്ധരണി ചിഹ്നങ്ങൾ ഉപയോഗിച്ച് വേർതിരിച്ചിരിക്കുന്നു കൂടാതെ ബാക്ക്‌സ്ലാഷ് എസ്കേപ്പിംഗ് സിന്റാക്സിനെ പിന്തുണയ്‌ക്കുന്നു.
*ബൂളിയൻ: മൂല്യങ്ങളിൽ ഒന്ന് ശരിയോ തെറ്റോ(true or false) ആണ്.

## പുറത്തേക്കുള്ള കണ്ണികൾ
* Format home page
* RFC 4627, current formal JSON specification.
* Relationship between JSON and YAML 
* The Limitations of JSON
* JSON Viewer Usage
* [Mastering JSON](http://www.hunlock.com/blogs/Mastering_JSON_(_JavaScript_Object_Notation_)) 
* JSON-Introduction By Microsoft
* A JSON Schema Proposal 
* wxJSON - The wxWidgets implementation of JSON 
* Video: Douglas Crockford — The JSON Saga 
* Identity and repair JSON errors automatically. 
* JSON Viewer
* JSON Formatter and JSON Validator
## അവലംബം