खोज…


परिचय

JSON ( जावास्क्रिप्ट ऑब्जेक्ट नोटेशन ) प्लेटफ़ॉर्म में वस्तुओं को क्रमबद्ध करने का एक स्वतंत्र और स्वतंत्र मंच है। क्योंकि यह अक्सर वेब पर उपयोग किया जाता है और इसलिए PHP है, PHP में JSON के साथ काम करने के लिए एक बुनियादी विस्तार है

वाक्य - विन्यास

  • स्ट्रिंग json_encode (मिश्रित $ मूल्य [, इंट $ विकल्प = 0 [, इंट $ गहराई = 512]])
  • मिश्रित json_decode (स्ट्रिंग $ json [, बूल $ assoc = false [, int $ गहराई = 512 [, int $ विकल्प = 0]]]]

पैरामीटर

पैरामीटर विवरण
json_encode -
मूल्य मान एन्कोड किया जा रहा है। एक संसाधन को छोड़कर कोई भी प्रकार हो सकता है। सभी स्ट्रिंग डेटा UTF-8 एन्कोडेड होने चाहिए।
विकल्प JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK, JSON_PRETTY -PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBASH, JSON_HEX_QUOT, JSON_HEX_QUOT, JSON_HEX_QUOT से मिलकर बने इन स्थिरांक का व्यवहार JSON स्थिरांक पृष्ठ पर वर्णित है।
गहराई अधिकतम गहराई निर्धारित करें। शून्य से अधिक होना चाहिए।
json_decode -
json JSON स्ट्रिंग को डिकोड किया जा रहा है। यह फ़ंक्शन केवल UTF-8 एन्कोडेड स्ट्रिंग्स के साथ काम करता है।
Assoc वस्तुओं के बजाय साहचर्य सरणी को वापस करना चाहिए।
विकल्प JSON के बिटकॉइंस विकल्पों को डिकोड करते हैं। वर्तमान में केवल JSON_BIGINT_AS_STRING समर्थित है (डिफ़ॉल्ट रूप से बड़े पूर्णांक को फ़्लोट के रूप में डालना है)

टिप्पणियों

  • json_decode अमान्य JSON की हैंडलिंग बहुत परतदार है, और यदि डिकोडिंग सफल हो गई है, तो यह निर्धारित करना बहुत मुश्किल है कि अमान्य इनपुट के लिए json_decode वापस आ जाता है, हालांकि null JSON को डिकोड करने के लिए पूरी तरह से वैध वस्तु भी है। इस तरह की समस्याओं को रोकने के लिए आपको हर बार जब भी आप इसे इस्तेमाल करते हैं तो आपको json_last_error को कॉल करना चाहिए।

JSON स्ट्रिंग को डिकोड करना

json_decode() फ़ंक्शन अपने पहले पैरामीटर के रूप में JSON-एन्कोडेड स्ट्रिंग लेता है और इसे PHP चर में पार्स करता है।

अगर JSON ऑब्जेक्ट एक सरणी है, json_decode() सामान्य रूप से json_decode() एक वस्तु को \ stdClass लौटाएगा यदि JSON ऑब्जेक्ट में शीर्ष स्तर आइटम एक शब्दकोश या अनुक्रमित सरणी है। यह स्केलर मान या NULL को कुछ स्केलर मानों के लिए भी लौटाएगा, जैसे कि साधारण तार, "true" , "false" और "null" । यह किसी भी त्रुटि पर NULL को लौटाता NULL

// Returns an object (The top level item in the JSON string is a JSON dictionary)
$json_string = '{"name": "Jeff", "age": 20, "active": true, "colors": ["red", "blue"]}';
$object = json_decode($json_string);
printf('Hello %s, You are %s years old.', $object->name, $object->age);
#> Hello Jeff, You are 20 years old.

// Returns an array (The top level item in the JSON string is a JSON array)
$json_string = '["Jeff", 20, true, ["red", "blue"]]';
$array = json_decode($json_string);
printf('Hello %s, You are %s years old.', $array[0], $array[1]);

ऊपर दी गई वस्तु पर प्रत्येक संपत्ति के प्रकार और मूल्यों को देखने के लिए var_dump() का उपयोग करें।

// Dump our above $object to view how it was decoded
var_dump($object);

आउटपुट (चर प्रकार पर ध्यान दें):

class stdClass#2 (4) {
 ["name"] => string(4) "Jeff"
 ["age"] => int(20)
 ["active"] => bool(true)
 ["colors"] =>
   array(2) {
     [0] => string(3) "red"
     [1] => string(4) "blue"
   }
}

नोट: JSON में चर प्रकार उनके PHP समतुल्य में परिवर्तित किए गए थे।


किसी ऑब्जेक्ट को वापस करने के बजाय JSON ऑब्जेक्ट्स के लिए एक साहचर्य सरणी वापस करने के लिए, json_decode() के दूसरे पैरामीटर के रूप में true पास करें।

$json_string = '{"name": "Jeff", "age": 20, "active": true, "colors": ["red", "blue"]}';
$array = json_decode($json_string, true); // Note the second parameter
var_dump($array);

आउटपुट (सरणी साहचर्य संरचना पर ध्यान दें):

array(4) {
  ["name"] => string(4) "Jeff"
  ["age"] => int(20)
  ["active"] => bool(true)
  ["colors"] =>
  array(2) {
    [0] => string(3) "red"
    [1] => string(4) "blue"
  }
}

दूसरे पैरामीटर ( $assoc ) का कोई प्रभाव नहीं पड़ता है यदि चर को लौटाया जाना एक वस्तु नहीं है।

नोट: यदि आप $assoc पैरामीटर का उपयोग करते हैं, तो आप एक खाली सरणी और एक खाली वस्तु के बीच का अंतर खो देंगे। इसका मतलब यह है कि आपके डिकोड किए गए आउटपुट पर फिर से json_encode() चलने से JSON संरचना अलग हो जाएगी।

यदि JSON स्ट्रिंग में 512 से अधिक तत्वों की एक "गहराई" है ( संस्करणों में 20 तत्व 5.2.3, या संस्करण 5.2.3 में 128 संस्करण में 128 ) पुनरावृत्ति में, फ़ंक्शन json_decode() NULL देता NULL । 5.3 या बाद के संस्करणों में, इस सीमा को तीसरे पैरामीटर ( $depth ) का उपयोग करके नियंत्रित किया जा सकता है, जैसा कि नीचे चर्चा की गई है।


मैनुअल के अनुसार:

PHP मूल »RFC 4627 में निर्दिष्ट JSON का सुपरसेट लागू करता है - यह स्केलर प्रकारों और NULL को भी एनकोड और डिकोड करेगा। RFC 4627 केवल इन मानों का समर्थन करता है जब वे किसी सरणी या ऑब्जेक्ट के अंदर नेस्टेड होते हैं। हालाँकि यह सुपरसेट नए »RFC 7159 (जो RFC 4627 को सुपरसेड करना है) और » ECMA-404 में "JSON टेक्स्ट" की विस्तारित परिभाषा के अनुरूप है, लेकिन इससे पुराने Jars पार्सर्स के साथ इंटरऑपरेबिलिटी समस्या हो सकती है जो RFC 4627 का सख्ती से पालन करते हैं। एकल स्केलर मान एन्कोडिंग।

इसका मतलब है, उदाहरण के लिए, PHP में एक साधारण स्ट्रिंग को एक वैध JSON ऑब्जेक्ट माना जाएगा:

$json = json_decode('"some string"', true);
var_dump($json, json_last_error_msg());

आउटपुट:

string(11) "some string"
string(8) "No error"

लेकिन सरल तार, किसी सरणी या ऑब्जेक्ट में नहीं, RFC 4627 मानक का हिस्सा नहीं हैं। परिणामस्वरूप, JSLint , JSON Formatter & Validator (RFC 4627 मोड में) जैसे ऑनलाइन चेकर्स आपको एक त्रुटि देंगे।

पुनरावृत्ति की गहराई के लिए एक तीसरा $depth पैरामीटर है (डिफ़ॉल्ट मान 512 ), जिसका अर्थ है मूल ऑब्जेक्ट के अंदर नेस्टेड ऑब्जेक्ट की मात्रा को डिकोड किया जाना है।

एक चौथा $options पैरामीटर है। यह वर्तमान में केवल एक मान, JSON_BIGINT_AS_STRING स्वीकार करता है। डिफ़ॉल्ट व्यवहार (जो इस विकल्प को छोड़ देता है) स्ट्रिंग्स के बजाय बड़े पूर्णांक को फ्लोट्स में डालना है।

सही, झूठे और अशक्त शाब्दिक के अमान्य गैर-निचलीकृत वेरिएंट अब मान्य इनपुट के रूप में स्वीकार नहीं किए जाते हैं।

तो यह उदाहरण:

var_dump(json_decode('tRue'), json_last_error_msg());
var_dump(json_decode('tRUe'), json_last_error_msg());
var_dump(json_decode('tRUE'), json_last_error_msg());
var_dump(json_decode('TRUe'), json_last_error_msg());
var_dump(json_decode('TRUE'), json_last_error_msg());
var_dump(json_decode('true'), json_last_error_msg());

PHP 5.6 से पहले:

bool(true)
string(8) "No error"
bool(true)
string(8) "No error"
bool(true)
string(8) "No error"
bool(true)
string(8) "No error"
bool(true)
string(8) "No error"
bool(true)
string(8) "No error"

और बाद में:

NULL
string(12) "Syntax error"
NULL
string(12) "Syntax error"
NULL
string(12) "Syntax error"
NULL
string(12) "Syntax error"
NULL
string(12) "Syntax error"
bool(true)
string(8) "No error"

इसी तरह का व्यवहार false और null लिए होता है।

ध्यान दें कि स्ट्रिंग परिवर्तित नहीं किया जा सकता है, तो json_decode() NULL वापस आ जाएगा।

$json = "{'name': 'Jeff', 'age': 20 }" ;  // invalid json 

$person = json_decode($json);
echo $person->name;    //  Notice: Trying to get property of non-object: returns null
echo json_last_error();     
#  4 (JSON_ERROR_SYNTAX)
echo json_last_error_msg(); 
#  unexpected character 

त्रुटियों का पता लगाने के लिए केवल NULL होने वाले रिटर्न मान पर भरोसा करना सुरक्षित नहीं है। उदाहरण के लिए, यदि JSON स्ट्रिंग में "null" कुछ भी नहीं है, json_decode() null हो जाएगी, भले ही कोई त्रुटि हुई हो।

JSON स्ट्रिंग एन्कोडिंग

json_encode फ़ंक्शन एक PHP सरणी (या PHP 5.4 के बाद से, एक ऑब्जेक्ट जो JsonSerializable इंटरफ़ेस को लागू करता है) को JSON-एन्कोडेड स्ट्रिंग में बदल देगा। यह सफलता पर JSON- एन्कोडेड स्ट्रिंग या विफलता पर FALSE देता है।

$array = [
    'name' => 'Jeff',
    'age' => 20,
    'active' => true,
    'colors' => ['red', 'blue'],
    'values' => [0=>'foo', 3=>'bar'],
];

एन्कोडिंग के दौरान, PHP डेटा प्रकार स्ट्रिंग, पूर्णांक और बूलियन को उनके JSON समकक्ष में परिवर्तित किया जाता है। एसोसिएटेड सरणियों को JSON ऑब्जेक्ट्स के रूप में एन्कोड किया जाता है, और - जब डिफ़ॉल्ट तर्क के साथ बुलाया जाता है - अनुक्रमित सरणियों को JSON ऑब्जेक्ट्स के रूप में एन्कोड किया जाता है। (जब तक कि सरणी कुंजियां 0 से शुरू होने वाला एक निरंतर संख्यात्मक अनुक्रम नहीं होती हैं, उस स्थिति में सरणी को JSON ऑब्जेक्ट के रूप में एन्कोड किया जाएगा।)

echo json_encode($array);

आउटपुट:

{"name":"Jeff","age":20,"active":true,"colors":["red","blue"],"values":{"0":"foo","3":"bar"}}

तर्क

PHP 5.3 के बाद से, json_encode का दूसरा तर्क एक बिटमास्क है जो निम्नलिखित में से एक या अधिक हो सकता है।

किसी भी बिटमास्क के साथ, उन्हें बाइनरी या ऑपरेटर के साथ जोड़ा जा सकता है |

PHP 5.x 5.3

JSON_FORCE_OBJECT

किसी सरणी के बजाय किसी ऑब्जेक्ट के निर्माण के लिए मजबूर करता है

$array = ['Joel', 23, true, ['red', 'blue']];
echo json_encode($array);
echo json_encode($array, JSON_FORCE_OBJECT);

आउटपुट:

["Joel",23,true,["red","blue"]]
{"0":"Joel","1":23,"2":true,"3":{"0":"red","1":"blue"}}

JSON_HEX_TAG , JSON_HEX_AMP , JSON_HEX_APOS , JSON_HEX_QUOT

एन्कोडिंग के दौरान निम्नलिखित रूपांतरण सुनिश्चित करता है:

लगातार इनपुट उत्पादन
JSON_HEX_TAG < \u003C
JSON_HEX_TAG > \u003E
JSON_HEX_AMP & \u0026
JSON_HEX_APOS ' \u0027
JSON_HEX_QUOT " \u0022
$array = ["tag"=>"<>", "amp"=>"&", "apos"=>"'", "quot"=>"\""];
echo json_encode($array);
echo json_encode($array, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT);

आउटपुट:

{"tag":"<>","amp":"&","apos":"'","quot":"\""}
{"tag":"\u003C\u003E","amp":"\u0026","apos":"\u0027","quot":"\u0022"}
PHP 5.x 5.3

JSON_NUMERIC_CHECK

यह सुनिश्चित करता है कि संख्यात्मक तार पूर्णांक में परिवर्तित हो गए हैं।

$array = ['23452', 23452];
echo json_encode($array);
echo json_encode($array, JSON_NUMERIC_CHECK);

आउटपुट:

["23452",23452]    
[23452,23452]
PHP 5.x 5.4

JSON_PRETTY_PRINT

JSON आसानी से पठनीय बनाता है

$array = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4];
echo json_encode($array);
echo json_encode($array, JSON_PRETTY_PRINT);

आउटपुट:

{"a":1,"b":2,"c":3,"d":4}
{
    "a": 1,
    "b": 2,
    "c": 3,
    "d": 4
}

JSON_UNESCAPED_SLASHES

आउटपुट में अनपेक्षित / फ़ॉरवर्ड स्लैश शामिल हैं

$array = ['filename' => 'example.txt', 'path' => '/full/path/to/file/'];
echo json_encode($array);
echo json_encode($array, JSON_UNESCAPED_SLASHES);

आउटपुट:

{"filename":"example.txt","path":"\/full\/path\/to\/file"}
{"filename":"example.txt","path":"/full/path/to/file"}

JSON_UNESCAPED_UNICODE

आउटपुट में UTF8- एन्कोडेड वर्णों के बजाय \u -encoded स्ट्रिंग्स शामिल हैं

$blues = ["english"=>"blue", "norwegian"=>"blå", "german"=>"blau"];
echo json_encode($blues);
echo json_encode($blues, JSON_UNESCAPED_UNICODE);

आउटपुट:

{"english":"blue","norwegian":"bl\u00e5","german":"blau"}
{"english":"blue","norwegian":"blå","german":"blau"}
PHP 5.x 5.5

JSON_PARTIAL_OUTPUT_ON_ERROR

एन्कोडिंग को जारी रखने की अनुमति देता है अगर कुछ अनअनुकूलित मूल्यों का सामना करना पड़ता है।

$fp = fopen("foo.txt", "r");
$array = ["file"=>$fp, "name"=>"foo.txt"];
echo json_encode($array); // no output
echo json_encode($array, JSON_PARTIAL_OUTPUT_ON_ERROR);

आउटपुट:

{"file":null,"name":"foo.txt"}
PHP 5.x 5.6

JSON_PRESERVE_ZERO_FRACTION

यह सुनिश्चित करता है कि फ्लोट्स हमेशा फ्लोट के रूप में एन्कोडेड होते हैं।

$array = [5.0, 5.5];
echo json_encode($array);
echo json_encode($array, JSON_PRESERVE_ZERO_FRACTION);

आउटपुट:

[5,5.5]
[5.0,5.5]
PHP 7.x 7.1

JSON_UNESCAPED_LINE_TERMINATORS

जब JSON_UNESCAPED_UNICODE साथ उपयोग किया जाता है, तो पुराने PHP संस्करणों के व्यवहार को बदल देता है, और U + 2028 LINE SEPARATOR और U + 2029 PARAGRAPH SEPARATOR के वर्णों से नहीं बचता है। यद्यपि JSON में मान्य, ये वर्ण जावास्क्रिप्ट में मान्य नहीं हैं, इसलिए JSON_UNESCAPED_UNICODE का डिफ़ॉल्ट व्यवहार संस्करण 7.1 में बदल दिया गया था।

$array = ["line"=>"\xe2\x80\xa8", "paragraph"=>"\xe2\x80\xa9"];
echo json_encode($array, JSON_UNESCAPED_UNICODE);
echo json_encode($array, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_LINE_TERMINATORS);

आउटपुट:

{"line":"\u2028","paragraph":"\u2029"}
{"line":"
","paragraph":"
"}

JSON त्रुटियों को डीबग करना

जब json_encode या json_decode प्रदान की गई स्ट्रिंग को पार्स करने में विफल रहता है, तो यह false हो जाएगा। PHP स्वयं कोई त्रुटि या चेतावनी नहीं देगा जब ऐसा होता है, तो ओनस उपयोगकर्ता पर json_last_error () और json_last_error_msg () फ़ंक्शन का उपयोग करता है यह जांचने के लिए कि क्या कोई त्रुटि हुई और आपके आवेदन के अनुसार कार्य करें (इसे डीबग करें, एक त्रुटि संदेश दिखाएं , आदि।)।

JSON के साथ काम करते समय निम्न उदाहरण एक सामान्य त्रुटि दिखाता है, JSON स्ट्रिंग को डीकोड / एनकोड करने में विफलता (उदाहरण के लिए खराब UTF-8 एन्कोडेड स्ट्रिंग के गुजरने के कारण)

// An incorrectly formed JSON string
$jsonString = json_encode("{'Bad JSON':\xB1\x31}");

if (json_last_error() != JSON_ERROR_NONE) {
    printf("JSON Error: %s", json_last_error_msg());
}

#> JSON Error: Malformed UTF-8 characters, possibly incorrectly encoded

json_last_error_msg

json_last_error_msg() एक स्ट्रिंग को एनकोड / डीकोड करने की कोशिश करते समय हुई अंतिम त्रुटि का एक मानव पठनीय संदेश देता है।

  • यह फ़ंक्शन हमेशा एक स्ट्रिंग लौटाएगा , भले ही कोई त्रुटि न हुई हो।
    डिफ़ॉल्ट गैर-त्रुटि स्ट्रिंग No Error
  • यदि कुछ अन्य (अज्ञात) त्रुटि हुई तो यह false हो जाएगी
  • लूप में इसका उपयोग करते समय सावधानी बरतें , क्योंकि प्रत्येक पुनरावृत्ति पर json_last_error_msg को ओवरराइड किया जाएगा।

आपको इस फ़ंक्शन का उपयोग प्रदर्शन के लिए संदेश प्राप्त करने के लिए करना चाहिए, कि नियंत्रण कथनों में परीक्षण करने के लिए।

// Don't do this:
if (json_last_error_msg()){} // always true (it's a string)
if (json_last_error_msg() != "No Error"){} // Bad practice

// Do this: (test the integer against one of the pre-defined constants)
if (json_last_error() != JSON_ERROR_NONE) {
    // Use json_last_error_msg to display the message only, (not test against it)
    printf("JSON Error: %s", json_last_error_msg());
}

यह फ़ंक्शन PHP 5.5 से पहले मौजूद नहीं है। यहाँ एक पॉलीफ़िल कार्यान्वयन है:

if (!function_exists('json_last_error_msg')) {
    function json_last_error_msg() {
        static $ERRORS = array(
            JSON_ERROR_NONE => 'No error',
            JSON_ERROR_DEPTH => 'Maximum stack depth exceeded',
            JSON_ERROR_STATE_MISMATCH => 'State mismatch (invalid or malformed JSON)',
            JSON_ERROR_CTRL_CHAR => 'Control character error, possibly incorrectly encoded',
            JSON_ERROR_SYNTAX => 'Syntax error',
            JSON_ERROR_UTF8 => 'Malformed UTF-8 characters, possibly incorrectly encoded'
        );

        $error = json_last_error();
        return isset($ERRORS[$error]) ? $ERRORS[$error] : 'Unknown error';
    }
}

json_last_error

json_last_error() PHP द्वारा प्रदान किए गए पूर्व-परिभाषित स्थिरांक में से एक में मैप किए गए पूर्णांक देता है।

लगातार अर्थ
JSON_ERROR_NONE कोई त्रुटि नहीं हुई है
JSON_ERROR_DEPTH अधिकतम स्टैक गहराई को पार कर गया है
JSON_ERROR_STATE_MISMATCH अमान्य या विकृत JSON
JSON_ERROR_CTRL_CHAR नियंत्रण वर्ण त्रुटि, संभवतः गलत तरीके से एन्कोडेड है
JSON_ERROR_SYNTAX सिंटैक्स त्रुटि (PHP 5.3.3 के बाद से)
JSON_ERROR_UTF8 विकृत UTF-8 वर्ण, संभवतः गलत तरीके से एन्कोडेड (चूंकि PHP 5.5.0)
JSON_ERROR_RECURSION एन्कोड किए जाने वाले मान में एक या अधिक पुनरावर्ती संदर्भ
JSON_ERROR_INF_OR_NAN एन्कोड किए जाने वाले मान में एक या अधिक NAN या INF मान
JSON_ERROR_UNSUPPORTED_TYPE एक प्रकार का मान जो एन्कोड नहीं किया जा सकता है, दिया गया था

किसी ऑब्जेक्ट में JsonSerializable का उपयोग करना

PHP 5.x 5.4

जब आप REST API का निर्माण करते हैं, तो आपको क्लाइंट एप्लिकेशन को पास की जाने वाली वस्तु की जानकारी को कम करने की आवश्यकता हो सकती है। इस उद्देश्य के लिए, यह उदाहरण दिखाता है कि JsonSerialiazble इंटरफ़ेस का उपयोग कैसे किया JsonSerialiazble है।

इस उदाहरण में, वर्ग User वास्तव में एक काल्पनिक ORM के DB मॉडल ऑब्जेक्ट का विस्तार करता है।

class User extends Model implements JsonSerializable {
    public $id;
    public $name;
    public $surname;
    public $username;
    public $password;
    public $email;
    public $date_created;
    public $date_edit;
    public $role;
    public $status;

    public function jsonSerialize() {
        return [
            'name' => $this->name,
            'surname' => $this->surname,
            'username' => $this->username
        ];
    }
}

jsonSerialize() विधि प्रदान करके, वर्ग में JsonSerializable कार्यान्वयन जोड़ें।

public function jsonSerialize()

अब आपके एप्लिकेशन कंट्रोलर या स्क्रिप्ट में, जब ऑब्जेक्ट यूजर को json_encode() पास कर रहा है, तो आपको पूरे ऑब्जेक्ट के बजाय jsonSerialize() विधि का jsonSerialize() एन्कोडेड ऐरे मिलेगा।

json_encode($User);

वापस होगा:

{"name":"John", "surname":"Doe", "username" : "TestJson"}

गुण मान उदाहरण।

यह दोनों एक RESTful समापन बिंदु से लौटाए गए डेटा की मात्रा को कम कर देगा, और ऑब्जेक्ट गुणों को एक json प्रतिनिधित्व से बाहर करने की अनुमति देगा।


json_encode() साथ निजी और संरक्षित गुणों का उपयोग करना

JsonSerializable का उपयोग करने से बचने के लिए, json_encode() आउटपुट से वर्ग की जानकारी छिपाने के लिए निजी या संरक्षित गुणों का उपयोग करना भी संभव है। तब वर्ग को \ JsonSerializable लागू करने की आवश्यकता नहीं होती है।

Json_encode () फ़ंक्शन केवल JSON में एक वर्ग के सार्वजनिक गुणों को एन्कोड करेगा।

<?php

class User {
    // private properties only within this class
    private $id;
    private $date_created;
    private $date_edit;

    // properties used in extended classes
    protected $password;
    protected $email;
    protected $role;
    protected $status;

    // share these properties with the end user        
    public $name;
    public $surname;
    public $username;

    // jsonSerialize() not needed here
}        

$theUser = new User();

var_dump(json_encode($theUser));

आउटपुट:

string(44) "{"name":null,"surname":null,"username":null}"

हेडर जसन और लौटी प्रतिक्रिया

JSON के रूप में सामग्री प्रकार के साथ एक हेडर जोड़कर:

<?php
 $result = array('menu1' => 'home', 'menu2' => 'code php', 'menu3' => 'about');

//return the json response :
header('Content-Type: application/json');  // <-- header declaration
echo json_encode($result, true);    // <--- encode
exit();

हेडर वहाँ है तो आपका ऐप यह पता लगा सकता है कि क्या डेटा वापस किया गया था और इसे कैसे संभालना चाहिए।
ध्यान दें: सामग्री शीर्ष लेख केवल लौटाए गए डेटा के प्रकार के बारे में जानकारी है।

यदि आप UTF-8 का उपयोग कर रहे हैं, तो आप उपयोग कर सकते हैं:

header("Content-Type: application/json;charset=utf-8");

उदाहरण jQuery:

$.ajax({
        url:'url_your_page_php_that_return_json'        
    }).done(function(data){
        console.table('json ',data);
        console.log('Menu1 : ', data.menu1);
    });


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow