JSON ን በአሳሽዎ ውስጥ ቅርጸት ያድርጉ፣ ያረጋግጡ እና ያሳንሱ
JSON ማለት JavaScript Object Notation ማለት ሲሆን ለዘመናዊው ድር ቋንቋ ነው። የሚጠሩት ማንኛውም REST API ማለት ይቻላል የሚመልሰው በዚሁ ቅርጸት ነው፣ አብዛኞቹ የማዋቀሪያ (configuration) ፋይሎችም በእሱ ላይ ይመሰረታሉ፣ በአገልግሎቶች እና ፊት-ለፊት (front-end) መካከል የሚፈሰው መረጃም ትልቅ ድርሻ በJSON መልክ ይፈሳል። ተወዳጅ የሆነው ያለ ምክንያት አይደለም፦ ቅርጸቱ ቀላል፣ ከቋንቋ ነጻ የሆነ፣ ፕሮግራመሮች አስቀድመው በሚያስቧቸው ነገሮች — ኦብጀክቶች፣ ድርድሮች (arrays)፣ ጽሑፎች እና ቁጥሮች — ላይ በንጽህና የሚገጣጠም ነው። ነገር ግን ይህ ራሱ ጥቅጥቅነት ጉድለትም አለው። አንድ አገልጋይ በመቶዎች የሚቆጠሩ የተጠላለፉ ቁልፎችን የያዘ ነጠላ-መስመር ምላሽ ሲሰጥዎ፣ JSON ን ማራኪ ያደረገው መዋቅር ወደ ፊደላት ግንብ ተለውጦ ይጠፋል።
speedor.net JSON Formatter ያንን መዋቅር መልሶ ለመስጠት የተሰራ ነው። መረጃዎን ይለጥፉ፣ እናም JSON ን ወዲያውኑ በደንብ ያትማል፣ ያረጋግጣል እንዲሁም ያሳንሳል — ይህ ሁሉ ሙሉ በሙሉ በአሳሽዎ ትር (tab) ውስጥ ይከናወናል። ምንም ነገር ወደ አገልጋይ አይላክም፣ ይህም እየመረመሩት ያለው ጭነት (payload) ማስመሰያ ኮዶችን (tokens)፣ የደንበኛ መዝገቦችን ወይም የውስጥ መለያዎችን የያዘ API ምላሽ ሲሆን በጣም ወሳኝ ነው።

ኢንዴንቴሽን JSON ን እንደገና ሊነበብ የሚያደርገው እንዴት ነው
ቅርጸት ማድረግ፣ ውበት መስጠት ወይም pretty-printing እየተባለም የሚጠራው፣ የተጠቀጠቀ ወይም የተሳነሰ JSON ን ወስዶ የመስመር መቆራረጫዎችን እና ወጥ የሆነ ኢንዴንቴሽን ይጨምራል። መረጃው ራሱ ተመሳሳይ ነው፤ የሚቀየረው ባዶ ቦታ (whitespace) ብቻ ነው። ይሁን እንጂ ይህ ባዶ ቦታ ዓይንዎ የመጠላለፍ ጥልቀትን እንዲከተል፣ አንድ ኦብጀክት የት እንደሚያልቅ እና ቀጣዩ የት እንደሚጀምር እንዲያውቅ፣ የሦስት ንጥሎች ድርድርን ከሦስት መቶ ንጥሎች ድርድር እንዲለይ ያስችለዋል። ማዕከለኝነትን (integration) በሌሊት ሁለት ሰዓት ላይ ሲያርሙ፣ ሊነበብ የሚችል ዛፍ እና ያልተቆራረጠ ጽሑፍ መካከል ያለው ልዩነት ስህተቱን ማግኘት እና ማጣት መካከል ያለውን ልዩነት ይወክላል።
ጥሩ ፎርማተር የቁልፎችን ቅደም ተከተል እና ትክክለኛ እሴቶችን ሳይለውጥ ይይዛል፣ ስለዚህ የሚያነቡት ነገር API የላከውን በትክክል ይወክላል። እርስዎ ደግመው የተቀናበረ ግምታዊ ነገር አይደለም እያዩ ያለው፤ ተመሳሳይ ባይቶች ናቸው፣ ግን ሰው በቀላሉ ሊነበብ በሚችል መልኩ የተደረደሩ ልክ እንደ ማሽን በቀላሉ ሊተነተኑ በሚችሉ።
ማረጋገጫ እና ሁሉንም የሚያሰናክሉ ስህተቶች
ውበት መስጠት የስራው ግማሽ ብቻ ነው። JSON ቅርጸት ከመድረሱ በፊት፣ በመጀመሪያ ትክክለኛ መሆን አለበት፣ እናም ጥብቅ የቅርጸቱ ደንቦች ሰዎች ከሚጠብቁት በላይ ብዙ ስህተቶችን ይይዛሉ። አረጋጋጭ (validator) ግቤትዎን ይተነትናል እና በትክክል የት እንደተሰበረ ይነግርዎታል፣ አብዛኛውን ጊዜ ወደ አንድ መስመር እና አቀማመጥ በመጠቆም ስለዚህ በጨለማ መፈለግ አያስፈልግዎትም። ከታች ያሉት ጥቂት ስህተቶች አብዛኛዎቹን የተበላሹ JSON ጉዳዮች ይሸፍናሉ፦
- ተከታይ ኮማዎች (trailing commas)። JSON ከኦብጀክት ወይም ድርድር የመጨረሻ ንጥል በኋላ ኮማ አይፈቅድም። JavaScript ግን ይታገሰዋል፣ ገንቢዎች በልማድ የሚለጥፉት ለዚህ ነው።
- ነጠላ ጥቅሶች (single quotes)። ጽሑፎችና ቁልፎች ድርብ ጥቅሶችን መጠቀም አለባቸው። ከምንጭ ኮድ በቀጥታ የተነሳ ኦብጀክት ብዙ ጊዜ ነጠላ ጥቅሶችን ትቶ ይሄዳል፣ አረጋጋጩም ውድቅ ያደርገዋል።
- ጥቅስ ያልተደረገላቸው ቁልፎች (unquoted keys)። እያንዳንዱ ቁልፍ በጥቅስ የተከበበ ጽሑፍ መሆን አለበት። በJavaScript ኦብጀክት ውስጥ በደንብ የሚሰሩ ራቁታቸውን ቁልፎች ልክ ያልሆነ JSON ናቸው።
- የጎደሉ ወይም ያልተጣጣሙ ቅንፎች። ያልተዘጋ
{ወይም[፣ ወይም ተነጣይ ዝግ ቅንፍ፣ መላውን ሰነድ ያናውጣል። ፎርማተሩ ሚዛኑ የት እንደተሰበረ ያደምቃል። - አስተያየቶች እና undefined እሴቶች። JSON ምንም አስተያየት እና
undefinedየለውም፤ የሚፈቀዱትnull፣ ቡልያኖች፣ ቁጥሮች፣ ጽሑፎች፣ ድርድሮች እና ኦብጀክቶች ብቻ ናቸው።
አጠራጣሪ ጭነትን በመጀመሪያ በአረጋጋጩ ውስጥ ያካሂዱ፣ እነዚህ ችግሮች በሰከንዶች ውስጥ ይታያሉ ከግራ የተጋባ የስህተት ተከታታይ deploy ውድቀቶች ይልቅ።

ጭነትን ለማሳነስ ማሳነስ (minifying)
ተቃራኒው ስራ እኩል ጠቃሚ ነው። ማሳነስ እያንዳንዱን አማራጭ ባዶ ቦታ ባይት ያስወግዳል፣ JSON ዎን ወደ ጥብቅ ነጠላ-መስመር ቅርጽ ይመልሳል። መረጃው ወደ ኔትወርክ ወይም ወደ ማዋቀሪያ እሴት ሲሄድ በትክክል የሚፈልጉት ይህ ነው፣ ትንሽ ጭነት ማለት ያነሰ ባንድዊድዝ እና ፈጣን ማስተላለፍ ማለት ስለሆነ። የተለመደ የስራ ፍሰት ምላሽን ውብ ማድረግ በምታጠናበት ጊዜ፣ ችግር ያለበትን ማስተካከል፣ ከዚያም ውጤቱን ከመፈጸምዎ ወይም ወደ environment variable ከመለጠፍዎ በፊት ማሳነስ ነው። አንድ መሳሪያ የዚህን ዑደት ሁለቱንም ጫፎች ይይዛል።
በአካባቢ ማካሄድ ግላዊነትን ጠባቂ የሆነ መረጃ ይጠብቃል
እያንዳንዱ ደረጃ በራስዎ አሳሽ ውስጥ በJavaScript ስለሚካሄድ፣ የሚለጥፉት JSON ከማሽንዎ በፍጹም አይወጣም። ይህ የገበያ ልፍስፍስ አይደለም፣ ተግባራዊ ዋስትና ነው። Bearer ማስመሰያ ኮዶችን የያዘ ጥሬ API ምላሽ፣ የተጠቃሚ መረጃ ወደ ውጭ የመላክ ውጤት፣ ወይም የውስጥ አገልግሎት ማዋቀሪያ ላይ ሦስተኛ ወገን አገልጋይ እየመዘገበው ነው ብለው ሳይጨነቁ ማስገባት ይችላሉ። ትሩን ይዝጉ እና መረጃው ጠፍቷል። በመረጃ አያያዝ ደንቦች ስር ለሚሰሩ ማንኛውም ሰው፣ በአካባቢ-ብቻ ማካሄድ ሙሉ የአደጋ ምድብን ያስወግዳል።
JSON ዎ ንጹህ ከሆነ በኋላ፣ ወደፊት መውሰድ ሊፈልጉ ይችላሉ። ቀሪ የገንቢ መሳሪያዎቻችንን ያስሱ፣ ከJSON ወደ YAML ጋር መዋቅርን ይለውጡ፣ ወይም በBase64 በመጠቀም የተካተተ እሴትን ይፍቱ። እያንዳንዱ መሳሪያ ተመሳሳይ መርህ ይከተላል፦ ፈጣን፣ ነጻ፣ እና ሙሉ በሙሉ በአሳሽዎ ውስጥ የሚካሄድ።
በተደጋጋሚ የሚጠየቁ ጥያቄዎች
JSON ዬ ወደ አገልጋይ ይላካል?
አይ። ፎርማተሩ ሙሉ በሙሉ በአሳሽዎ ውስጥ JavaScript በመጠቀም ይካሄዳል። መረጃዎ በፍጹም የትም አይላክም፣ ስለዚህ ስሜታዊ የAPI ምላሾችን ወይም ማዋቀሪያ ፋይሎችን በደህንነት መለጠፍ ይችላሉ።
ቅርጸት ማድረግ እና ማሳነስ መካከል ያለው ልዩነት ምንድን ነው?
ቅርጸት ማድረግ JSON ን ሊነበብ እንዲችል ኢንዴንቴሽን እና የመስመር መቆራረጫዎችን ይጨምራል። ማሳነስ ሁሉንም አማራጭ ባዶ ቦታ በማስወገድ ጭነቱን በተቻለ መጠን ትንሽ ያደርገዋል። መረጃው ራሱ በሁለቱም ቅርጾች ተመሳሳይ ነው።
JSON ዬ ማረጋገጥ ለምን ይሳነዋል?
በጣም የተለመዱ ምክንያቶች ተከታይ ኮማዎች፣ ከድርብ ጥቅሶች ይልቅ ነጠላ ጥቅሶች፣ ጥቅስ ያልተደረገላቸው ቁልፎች፣ አስተያየቶች እና የጎደሉ ወይም ያልተጣጣሙ ቅንፎች ናቸው። አረጋጋጩ ችግሩ ወደተከሰተበት መስመር ይጠቁማል።
በJSON ውስጥ ነጠላ ጥቅሶችን መጠቀም እችላለሁ?
አይ። የJSON ደረጃ ለሁሉም ጽሑፎችና ቁልፎች ድርብ ጥቅሶችን ይጠይቃል። ነጠላ ጥቅሶች በJavaScript ውስጥ ትክክለኛ ናቸው ግን በJSON ውስጥ አይደሉም፣ ይህም የተደጋገመ የስህተት ምንጭ ነው።
መሳሪያው ቅርጸት ሲያደርግ መረጃዬን ይለውጣል?
አይ። ቅርጸት ማድረግ ባዶ ቦታ ብቻ ይጨምራል ወይም ያስወግዳል። ቁልፎቹ፣ እሴቶቹ እና ቅደም ተከተላቸው በትክክል እንደነበሩ ይቆያሉ፣ ስለዚህ የሚያነቡት API በትክክል የላከውን ነው።
የመጠን ገደብ አለ?
ማካሄድ በአካባቢ ስለሚከናወን፣ ተግባራዊ ገደቡ በአገልጋይ ገደብ ላይ ሳይሆን በመሳሪያዎ እና በአሳሽዎ ላይ የተመሰረተ ነው። የተለመዱ የAPI ምላሾች እና ማዋቀሪያ ፋይሎች ወዲያውኑ ቅርጸት ይያዛሉ።
