PHP Array மற்றும் JSON மாற்றி

PHP வரிசைகளை JSON ஆகவும் JSON-ஐ PHP வரிசைகளாகவும் இணையத்தில் மாற்றுங்கள்

மாற்றங்கள் அனைத்தும் உங்கள் உலாவியிலேயே நடைபெறும். உங்கள் தரவு எந்தச் சேவையகத்துக்கும் அனுப்பப்படாது.

Advertisement

விரிவான வழிகாட்டி

PHP அணிகளும் JSON-உம்: எப்படிப் பொருந்துகின்றன, இந்த மாற்றி உண்மையில் எதைப் படிக்கிறது

இந்தப் பக்கம் பற்றிய சோதித்த விளக்கம்: PHP முதல் JSON-க்குப் பின்னுள்ள உரை மாற்றப் படிகள், எவை மாறும் எவை தோல்வியடையும், JSON முதல் PHP வெளியீட்டிலுள்ள எஸ்கேப் ஆபத்துகள், துல்லியம் முக்கியமாகும்போது பயன்படுத்த வேண்டிய PHP பக்க விதிகள் (json_encode, json_decode, var_export).

கடைசியாகச் சரிபார்க்கப்பட்டது: Markdown பதிப்பு (AI-க்காக)

முக்கிய எண்கள் ஒரே பார்வையில்

வேலை செய்யும் PHP முதல் JSON உள்ளீடு
குறுகிய தொடரியல் பட்டியல்களும் JSON போன்ற உரையும்
எ.கா. ['a','b'], [1,2,3,], [[1,2],[3]]. எளிய JSON உரையும் கடந்து செல்லும்.
தோல்வியடையும் PHP முதல் JSON உள்ளீடு
=> அல்லது array( ... ) உள்ள எதுவும்
பக்கம் => ஐ முக்காற்புள்ளியாகவும் array( ஐ [ ஆகவும் மாற்றும், ஆனால் மூடும் அடைப்புக்குறியை ஒருபோதும் மாற்றாது; எனவே விசை/மதிப்பு அணிகளும் array() உம் செல்லாதவை என நிராகரிக்கப்படும்.
JSON முதல் PHP வெளியீடு
இரட்டை மேற்கோள் சரங்கள், 4 இடைவெளி உள்தள்ளல், பொருள்களுக்கு =>
சரங்களில் இரட்டை மேற்கோள் மட்டுமே எஸ்கேப் செய்யப்படும்; தரவிலுள்ள $ அல்லது பின்சாய்வுக்கோடு செய்யப்படாது.
var_export தேர்வு
எதையும் மாற்றாது
பெட்டி குறியிடப்பட்டாலும் இல்லாவிட்டாலும் வெளியீடு ஒன்றே; அது var_export-இன் உண்மையான வடிவமும் அல்ல.

PHP அணியை நம்பகமாக JSON ஆக மாற்றுதல்

PHP-ஐப் பகுப்பதை PHP-யிடமே விடுங்கள்; பக்கத்தை JSON பக்கத்துக்குப் பயன்படுத்துங்கள்.

  1. படி 1: PHP-இல் குறியாக்குங்கள்

    உங்கள் சொந்த ஸ்கிரிப்ட் அல்லது REPL-இல் json_encode($array, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE) இயக்குங்கள்.

  2. படி 2: JSON-ஐச் சோதியுங்கள்

    முடிவைச் சரிபார்ப்பியில் ஒட்டி, அது பகுக்கப்படுகிறதா என உறுதி செய்து, இடம் சார்ந்த பிழை இருந்தால் பாருங்கள்.

  3. படி 3: வேறு பாணி தேவைப்பட்டால் மறுவடிவமையுங்கள்

    4 இடைவெளி அல்லது தாவல் உள்தள்ளலுக்கு வடிவமைப்பியையும், ஒரு வரிக்குச் சுருக்கியையும் பயன்படுத்துங்கள்.

பக்கம் உண்மையில் என்ன செய்கிறது

எந்தத் திசையும் PHP பகுப்பாய்வியைப் பயன்படுத்துவதில்லை. இரண்டும் உலாவியில் இயங்கும், எதுவும் பதிவேற்றப்படாது; ஆனால் PHP முதல் JSON திசை என்பது சிறு உரை மாற்றங்களின் சங்கிலி, அதன்பின் JSON.parse:

  1. உரையை வெட்டி, <?php, ?> ஆகியவற்றை நீக்குதல்.
  2. ஒவ்வொரு array(-ஐயும் [ ஆக மாற்றுதல். இணையான ) தொடப்படாது.
  3. ஒவ்வொரு =>-ஐயும் : ஆக மாற்றுதல்.
  4. ஒவ்வொரு ஒற்றை மேற்கோள் '-ஐயும் இரட்டை மேற்கோள் " ஆக மாற்றுதல்.
  5. மூடும் ] அல்லது }-க்கு முன் உள்ள காற்புள்ளிகளை நீக்குதல்.
  6. JSON ஆகப் பகுத்து அச்சிடுதல்: அழகாக (2 இடைவெளி) அல்லது சுருக்கமாக.

அந்தக் குழாய் வழியே செல்லுபடியான JSON ஆக வெளிவருவது மட்டுமே மாறும்; மற்றவை "மாற்றுப் பிழை: PHP array தொடரியல் தவறானது: …" எனத் தோல்வியடையும், அதைத் தொடர்ந்து உலாவியின் JSON செய்தி வரும். தோல்விக்குப் பின் வெளியீட்டுப் பெட்டி அழிக்கப்படாது; எனவே அது முந்தைய இயக்கத்தின் முடிவையே இன்னும் காட்டக்கூடும். பெட்டியை அல்ல, சிவப்பு நிலை வரியைப் படியுங்கள்.

எவை மாறும், எவை மாறாது

கீழுள்ள முடிவுகள் பக்கத்தை இயக்கிப் பெற்றவை.

PHP உள்ளீடு முடிவு
['a','b','c'] வேலை செய்யும்: ["a","b","c"]
[1, 2, 3,] வேலை செய்யும்: [1,2,3] (இறுதிக் காற்புள்ளி நீக்கப்பட்டது)
[true, false, null] வேலை செய்யும்
[[1,2],[3]] வேலை செய்யும்
{"a":1} (ஏற்கெனவே JSON) வேலை செய்யும்: மாற்ற எதுவும் இல்லை
['name'=>'Mei','age'=>30] தோல்வி: ["name":"Mei","age":30] ஆகிறது; அது JSON அல்ல
array('a','b') தோல்வி: ["a","b") ஆகிறது
['it\'s'] மாறும், ஆனால் தவறாக: முடிவு it"s
["it's"] தோல்வி: அபாஸ்ட்ரஃபி சமநிலையற்ற மேற்கோளாகிறது
[TRUE, NULL] தோல்வி: PHP மாறிலிகள் எழுத்து வடிவ உணர்வற்றவை, JSON literals உணர்வுள்ளவை
$x = [1];, return [1,2];, [1,2]; // note தோல்வி: கூற்றுகள், அரைப்புள்ளிகள், கருத்துரைகள் புரியப்படாது
[1=>'a', 2=>'b'], [0x1F, 010] தோல்வி

நடைமுறையில் PHP முதல் JSON திசை எளிய பட்டியல்களையும் JSON போலத் தோன்றும் உரையையும் மட்டுமே கையாளும். பக்கத்தின் சொந்த விளக்கமும் FAQ-உம் இதைவிட அதிகமாகக் கூறுகின்றன; துணை அணிகளுக்கு இதை நம்பாதீர்கள்.

JSON முதல் PHP வெளியீடு

இந்தத் திசை JSON-ஐ சரியாகப் பகுத்து, பின் PHP மூலக் குறியீட்டை அச்சிடும். {"a":1,"b":[1,2],"c":{"d":null}}-க்குச் சரிபார்த்த வெளியீடு:

[
    "a" => 1,
    "b" => [
        1,
        2
    ],
    "c" => [
        "d" => null
    ]
]

JSON அணிகள் பட்டியல்களாகும், JSON பொருள்கள் "key" => value ஆகும், {} என்பது [] ஆகும். குறுகிய தொடரியலைத் தேர்வுநீக்கினால் array( … ) கிடைக்கும். $var = முன்னொட்டு, இறுதி அரைப்புள்ளி, இறுதிக் காற்புள்ளிகள் எதுவும் இல்லை; நீங்களே சேருங்கள். சரங்கள் PHP இரட்டை மேற்கோளில் " மட்டும் எஸ்கேப் செய்யப்பட்டு எழுதப்படுவதால் மூன்று ஆபத்துகள் உண்டு:

  • மாறி இடைச்செருகல்: JSON சரம் "cost: $price" PHP-இல் "cost: $price" ஆகும்; அங்கே $price ஒரு மாறியின் மதிப்பால் (அல்லது வரையறுக்காத மாறி எச்சரிக்கையால்) மாற்றப்படும். {$x}-க்கும் அப்படியே.
  • பின்சாய்வுக்கோடுகள்: JSON மதிப்பு back\nslash (உண்மையான பின்சாய்வுக்கோடு பின் n; JSON-இல் "back\\nslash" என எழுதப்படும்) "back\nslash" என அச்சாகும்; PHP அதைப் புதிய வரியாகப் படிக்கும். மூல வரி முறிவுகள் அப்படியே நகலாகும், அது சரி.
  • விசைகள் மேற்கோளிடப்படும் ஆனால் எஸ்கேப் செய்யப்படாது; எனவே " உள்ள விசை செல்லாத PHP-ஐ உருவாக்கும்.

எண்கள் JavaScript வடிவத்தைப் பயன்படுத்தும்: 1.0 என்பது 1 (int, float அல்ல), 1e21 என்பது 1e+21, 12345678901234567890 என்பது 12345678901234567000. var_export தேர்வுப்பெட்டி எதையும் மாற்றாது. உண்மையான var_export ஒற்றை மேற்கோள் சரங்கள், இடைவெளியுடன் array (, பட்டியல்களுக்கு வெளிப்படையான விசைகள் (0 => 1,), பெரிய எழுத்து NULL, இறுதிக் காற்புள்ளிகள் ஆகியவற்றை அச்சிடும்.

தெரிந்துகொள்ள வேண்டிய PHP பக்க விதிகள்

PHP 8.3-இல் சரிபார்த்தவை:

PHP JSON
[1,2,3] [1,2,3]
['a'=>1] {"a":1}
[1=>'a',2=>'b'] {"1":"a","2":"b"} (விசைகள் 0..n-1 அல்ல)
[0=>'a',1=>'b'] ["a","b"] (தொடர் விசைகள் பட்டியலாக்கும்)
[] [] (வெற்று அணி ஒருபோதும் {} அல்ல; அதற்கு new stdClass)
1.0 1, அல்லது JSON_PRESERVE_ZERO_FRACTION உடன் 1.0
"a/b é" இயல்பாக "a\/b é"; JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE உடன் "a/b é"

json_decode($json, true) துணை அணிகளைத் தரும்; true இல்லாமல் stdClass பொருள்களைத் தரும். {"1":"a","2":"b"} முழு எண் விசைகள் 1, 2 கொண்ட அணியாகும்; 12345678901234567890 போன்ற PHP_INT_MAX-ஐ மீறிய JSON முழு எண் float ஆகும். இறுதிக் காற்புள்ளி json_decode-ஐ "Syntax error" பிழையுடன் NULL திருப்பச் செய்யும்.

குறிப்பு: நீங்கள் commit செய்யவோ இயக்கவோ போகும் எதற்கும், PHP-யிலேயே var_export($data, true) மூலம் PHP மூலக் குறியீட்டையும், json_encode மூலம் JSON-ஐயும் உருவாக்குங்கள். விரைவான பட்டியல்களுக்கும் கட்டமைப்பைப் பார்ப்பதற்கும் இந்தப் பக்கத்தைப் பயன்படுத்துங்கள்.

பொதுவான தவறுகள்

  • array('key' => 'value') அல்லது ['key' => 'value'] ஒட்டி, பிழையைக் கண்டு வியப்பது.
  • பிழைக்குப் பின் வெளியீட்டுப் பெட்டியை நம்புவது; அது முந்தைய மாற்றத்தினதாக இருக்கலாம்.
  • $ அல்லது பின்சாய்வுக்கோடு உள்ள சரங்களைச் சோதிக்காமல், JSON முதல் PHP வெளியீட்டைக் குறியீட்டில் ஒட்டுவது.
  • 1.0, அல்லது []/{} வேறுபாடு சுற்றிவந்தபின்னும் நிலைக்கும் என எதிர்பார்ப்பது.

தொடர்புடைய கருவிகள்

JSON-ஐச் சரிபார்க்க அல்லது மறுவடிவமைக்க JSON சரிபார்ப்பி, JSON வடிவமைப்பி அல்லது JSON பார்வையாளர்; பாதைகளாகத் தட்டையாக்க JSON முதல் உரை.

Advertisement

அடிக்கடி கேட்கப்படும் கேள்விகள்

PHP array-ஐ JSON ஆக எப்படி மாற்றுவது?

"PHP Array to JSON" முறையைத் தேர்ந்தெடுத்து, [] அல்லது array() தொடரியலில் உள்ள PHP array குறியீட்டை ஒட்டுங்கள். JSON வடிவை (அழகாக வடிவமைத்தது அல்லது சுருக்கமானது) தேர்ந்தெடுத்து மாற்று என்பதை அழுத்துங்கள். கருவி உடனடியாகச் சரியான JSON ஆக மாற்றும்.

JSON-ஐ மீண்டும் PHP array ஆக மாற்ற முடியுமா?

முடியும். "JSON to PHP Array" முறையைத் தேர்ந்தெடுத்து JSON தரவை ஒட்டுங்கள். விரும்பிய PHP தொடரியலைத் தேர்ந்தெடுத்து மாற்று என்பதை அழுத்துங்கள். இருதிசை மாற்றமும் ஆதரிக்கப்படுகிறது.

சுருக்கமான மற்றும் பாரம்பரிய PHP array தொடரியலுக்கு என்ன வேறுபாடு?

சுருக்கத் தொடரியல் [] அடைப்புக்குறிகளைப் பயன்படுத்தி PHP 5.4 முதல் கிடைக்கிறது; பாரம்பரியத் தொடரியல் array() என்பதைக் கொண்டது. எடுத்துக்காட்டு: ["a" => 1] மற்றும் array("a" => 1). இரண்டும் ஒரே விதமாக இயங்கும்; சுருக்கமானது நவீன PHP-யில் பரவலாகப் பயன்படுத்தப்படுகிறது.

உள்ளமைந்த arrays-ஐ கருவி கையாளுமா?

ஆம். எந்த ஆழத்திலும் உள்ளமைந்த arrays மற்றும் objects-ஐ முழுமையாக ஆதரிக்கிறது; சிக்கலான பல அடுக்கு தரவுக் கட்டமைப்புகளையும் சரியாகக் கையாளும்.

மாற்றும்போது தரவு வகைகள் பாதுகாக்கப்படுமா?

ஆம். சரங்கள், எண்கள், பூலியன் (true/false) மற்றும் null மதிப்புகள் காக்கப்படும். தொடர்புடைய வரிசைகள் JSON பொருள்களாகவும் எண் குறியீட்டிலான வரிசைகள் JSON வரிசைகளாகவும் மாறும்.

எனது தரவு சேவையகத்துக்கு அனுப்பப்படுமா?

இல்லை. மாற்றங்கள் அனைத்தும் உங்கள் உலாவியில் நடக்கும். தரவு சாதனத்தை விட்டு வெளியேறாது; எனவே API விசைகள் மற்றும் அமைப்புத் தகவல் போன்ற முக்கியத் தரவுகளுக்கும் பாதுகாப்பானது.

var_export வடிவம் என்றால் என்ன?

var_export என்பது மாறியின் பகுப்பாய்வு செய்யக்கூடிய சர வடிவத்தை வெளியிடும் PHP செயல்பாடு. இந்த விருப்பம் var_export() உருவாக்கும் அதே பாணியில் PHP குறியீட்டை உருவாக்குகிறது; குறியீடு உருவாக்கத்துக்கும் பிழைதிருத்தத்துக்கும் உதவும்.

பெரிய JSON அல்லது PHP arrays-ஐ பயன்படுத்தலாமா?

ஆம். பெரிய தரவுக் கட்டமைப்புகளையும் கருவி கையாளும். இருப்பினும் பல மெகாபைட் அளவுள்ள கோப்புகள் உங்கள் உலாவி மற்றும் சாதனத்தின் வேகத்தைப் பொறுத்து செயலாக்க அதிக நேரம் எடுக்கலாம்.

எனது PHP array அல்லது JSON தவறாக இருந்தால் என்ன நடக்கும்?

உள்ளீட்டைச் சரிபார்த்து, என்ன தவறு ஏற்பட்டது என்பதைக் குறிப்பிட்ட பிழைச் செய்தியைக் கருவி காட்டும். இதனால் தொடரியல் பிழையை விரைவாகக் கண்டறிந்து சரிசெய்யலாம்.

மாற்றிய வெளியீட்டை பதிவிறக்கலாமா?

ஆம். JSON வெளியீட்டை .json கோப்பாகவும் PHP array வெளியீட்டை .php கோப்பாகவும் சேமிக்க பதிவிறக்கு பொத்தானைப் பயன்படுத்துங்கள்.

PHP மற்றும் JSON இடையே ஏன் மாற்ற வேண்டும்?

API பதில்களை PHP பயன்பாடுகளில் பயன்படுத்துதல், JSON சோதனைத் தரவிலிருந்து PHP தரவை உருவாக்குதல், அமைப்புக் கோப்புகள் உருவாக்குதல், அமைப்புகளுக்கிடையே தரவு இடமாற்றம் மற்றும் ஆவண எடுத்துக்காட்டுகள் ஆகியவை பொதுவான பயன்பாடுகள்.

அழகாக வடிவமைத்த JSON தரவை மாற்றுமா?

இல்லை. வாசிக்க எளிதாக்க இடைவெளிகளையும் வரி முறிவுகளையும் மட்டுமே சேர்க்கும். தரவுக் கட்டமைப்பும் மதிப்புகளும் சுருக்கமான JSON-இல் இருப்பதுபோலவே இருக்கும்; மாறுவது கோப்பு அளவும் வாசிப்புத் தெளிவும் மட்டுமே.

ஆதாரங்கள்

  1. PHP manual — json_encode — Lists versus objects, escaping flags, float handling.
  2. PHP manual — json_decode — Objects as stdClass or associative arrays, big integers.
  3. PHP manual — var_export — The real output format of var_export.
  4. PHP manual — Strings — Variable interpolation and escape sequences in double-quoted strings.
  5. IETF — RFC 8259, The JSON Data Interchange Format

இந்த வழிகாட்டி வெளியிடப்பட்ட விதிகளை எளிய மொழியில் விளக்குகிறது. இது நிதி, சட்ட அல்லது அதிகாரப்பூர்வ ஆலோசனை அல்ல — விதிகள் மாறக்கூடும், எனவே முடிவெடுக்கும் முன் மேலே இணைக்கப்பட்ட அமைப்பிடம் உறுதிப்படுத்துங்கள்.

Advertisement