दिलचस्प पोस्ट
मेरी नियमित अभिव्यक्ति बहुत अधिक मेल खाता है मैं इसे सबसे छोटी संभव पैटर्न से मेल करने के लिए कैसे कह सकता हूँ? पीएचपी – डीबगिंग कर्ल जावास्क्रिप्ट window.location.href मजाक में jQuery Sortable – कई आइटम खींचें और छोड़ें स्विफ्ट में सिंगलटन `__stack_chk_fail 'के अपरिभाषित संदर्भ जावास्क्रिप्ट में पृष्ठ पर मैं ऑब्जेक्ट की पूर्ण स्थिति कैसे प्राप्त करूं? कैसे फ्लेक्स में सभी अपवादों को पकड़ने के लिए? लघु IF – ELSE कथन डेटाबेस को हैश को सहेजने के लिए पटरियों का उपयोग करें serialize मैं iPhone पर एक लेखन योग्य पथ कैसे प्राप्त करूं? एएसपी.नेट में सत्र का समय समाप्त मैं ईक्लिप्स में मेवेन निर्भरता कैसे जोड़ूं? ओडेटा सर्विस सर्विस के साथ? एसएमएस पढ़ने के लिए नया टेलीफोनी सामग्री प्रदाता का उपयोग करना

PHP के साथ सुंदर-प्रिंटिंग JSON

मैं एक PHP लिपि का निर्माण कर रहा हूं जो कि जेएसएएन डेटा को किसी अन्य स्क्रिप्ट पर फ़ीड करता है। मेरी स्क्रिप्ट डेटा को एक बड़े साहचर्य सरणी में बनाता है, और फिर json_encode का उपयोग करते हुए डेटा को आउटपुट करता है। यहां एक उदाहरण स्क्रिप्ट है:

 $data = array('a' => 'apple', 'b' => 'banana', 'c' => 'catnip'); header('Content-type: text/javascript'); echo json_encode($data); 

उपरोक्त कोड निम्नलिखित आउटपुट देता है:

 {"a":"apple","b":"banana","c":"catnip"} 

यह बहुत अच्छा है अगर आपके पास बहुत कम डेटा है, लेकिन मैं इन पंक्तियों के साथ कुछ पसंद करता हूं:

 { "a": "apple", "b": "banana", "c": "catnip" } 

एक बदसूरत हैक बिना PHP में ऐसा करने का एक तरीका है? ऐसा लगता है कि फेसबुक पर किसी ने इसे सोचा था।

Solutions Collecting From Web of "PHP के साथ सुंदर-प्रिंटिंग JSON"

PHP 5.4 json_encode() कॉल के साथ उपयोग के लिए JSON_PRETTY_PRINT विकल्प प्रदान करता है

http://php.net/manual/en/function.json-encode.php

 <?php ... $json_string = json_encode($data, JSON_PRETTY_PRINT); 

यह फ़ंक्शन JSON स्ट्रिंग लेगा और यह बहुत पठनीय होगा। यह भी अभिसरण होना चाहिए,

 prettyPrint( $json ) === prettyPrint( prettyPrint( $json ) ) 

इनपुट

 {"key1":[1,2,3],"key2":"value"} 

उत्पादन

 { "key1": [ 1, 2, 3 ], "key2": "value" } 

कोड

 function prettyPrint( $json ) { $result = ''; $level = 0; $in_quotes = false; $in_escape = false; $ends_line_level = NULL; $json_length = strlen( $json ); for( $i = 0; $i < $json_length; $i++ ) { $char = $json[$i]; $new_line_level = NULL; $post = ""; if( $ends_line_level !== NULL ) { $new_line_level = $ends_line_level; $ends_line_level = NULL; } if ( $in_escape ) { $in_escape = false; } else if( $char === '"' ) { $in_quotes = !$in_quotes; } else if( ! $in_quotes ) { switch( $char ) { case '}': case ']': $level--; $ends_line_level = NULL; $new_line_level = $level; break; case '{': case '[': $level++; case ',': $ends_line_level = $level; break; case ':': $post = " "; break; case " ": case "\t": case "\n": case "\r": $char = ""; $ends_line_level = $new_line_level; $new_line_level = NULL; break; } } else if ( $char === '\\' ) { $in_escape = true; } if( $new_line_level !== NULL ) { $result .= "\n".str_repeat( "\t", $new_line_level ); } $result .= $char.$post; } return $result; } 

मेरी भी यही समस्या थी।

वैसे भी मैं यहाँ बस जेसन स्वरूपण कोड का इस्तेमाल किया:

http://recursive-design.com/blog/2008/03/11/format-json-with-php/

इसके लिए मुझे इसके लिए क्या जरूरी है इसके लिए अच्छा काम करता है।

और अधिक बनाए रखा संस्करण: https://github.com/GerHobbelt/nicejson-php

कई उपयोगकर्ताओं ने सुझाव दिया है कि आप का उपयोग करें

 echo json_encode($results, JSON_PRETTY_PRINT); 

जो बिल्कुल सही है लेकिन यह पर्याप्त नहीं है, ब्राउज़र को डेटा के प्रकार को समझने की जरूरत है, डेटा को वापस उपयोगकर्ता को वापस करने के पहले ही हेडर निर्दिष्ट कर सकते हैं।

 header('Content-Type: application/json'); 

यह एक अच्छी तरह से स्वरूपित आउटपुट का परिणाम देगा

या, अगर आप विस्तार चाहते हैं तो आप Chrome के लिए JSONView का उपयोग कर सकते हैं।

यदि आप फ़ायरफ़ॉक्स पर हैं, तो JSONovich इंस्टॉल करें । मुझे पता नहीं वास्तव में एक PHP समाधान है, लेकिन यह विकास उद्देश्यों / डीबगिंग के लिए चाल है।

मैंने कम्पोज़र से कोड लिया: https://github.com/composer/composer/blob/master/src/Composer/Json/JsonFile.php और अच्छे जेसन: https://github.com/GerHobbelt/nicejson-php/blob / master / nicejson.php संगीतकार कोड अच्छा है क्योंकि यह आसानी से 5.3 से 5.4 तक अपडेट करता है, लेकिन यह ऑब्जेक्ट केवल एन्कोड करता है जबकि अच्छाजसन जेसन स्ट्रिंग्स लेता है, इसलिए मैंने उन्हें विलय कर दिया। कोड का उपयोग JSON स्ट्रिंग और / या एन्कोड ऑब्जेक्ट के लिए किया जा सकता है, मैं वर्तमान में इसे एक Drupal मॉड्यूल में उपयोग कर रहा हूं।

 if (!defined('JSON_UNESCAPED_SLASHES')) define('JSON_UNESCAPED_SLASHES', 64); if (!defined('JSON_PRETTY_PRINT')) define('JSON_PRETTY_PRINT', 128); if (!defined('JSON_UNESCAPED_UNICODE')) define('JSON_UNESCAPED_UNICODE', 256); function _json_encode($data, $options = 448) { if (version_compare(PHP_VERSION, '5.4', '>=')) { return json_encode($data, $options); } return _json_format(json_encode($data), $options); } function _pretty_print_json($json) { return _json_format($json, JSON_PRETTY_PRINT); } function _json_format($json, $options = 448) { $prettyPrint = (bool) ($options & JSON_PRETTY_PRINT); $unescapeUnicode = (bool) ($options & JSON_UNESCAPED_UNICODE); $unescapeSlashes = (bool) ($options & JSON_UNESCAPED_SLASHES); if (!$prettyPrint && !$unescapeUnicode && !$unescapeSlashes) { return $json; } $result = ''; $pos = 0; $strLen = strlen($json); $indentStr = ' '; $newLine = "\n"; $outOfQuotes = true; $buffer = ''; $noescape = true; for ($i = 0; $i < $strLen; $i++) { // Grab the next character in the string $char = substr($json, $i, 1); // Are we inside a quoted string? if ('"' === $char && $noescape) { $outOfQuotes = !$outOfQuotes; } if (!$outOfQuotes) { $buffer .= $char; $noescape = '\\' === $char ? !$noescape : true; continue; } elseif ('' !== $buffer) { if ($unescapeSlashes) { $buffer = str_replace('\\/', '/', $buffer); } if ($unescapeUnicode && function_exists('mb_convert_encoding')) { // http://stackoverflow.com/questions/2934563/how-to-decode-unicode-escape-sequences-like-u00ed-to-proper-utf-8-encoded-cha $buffer = preg_replace_callback('/\\\\u([0-9a-f]{4})/i', function ($match) { return mb_convert_encoding(pack('H*', $match[1]), 'UTF-8', 'UCS-2BE'); }, $buffer); } $result .= $buffer . $char; $buffer = ''; continue; } elseif(false !== strpos(" \t\r\n", $char)) { continue; } if (':' === $char) { // Add a space after the : character $char .= ' '; } elseif (('}' === $char || ']' === $char)) { $pos--; $prevChar = substr($json, $i - 1, 1); if ('{' !== $prevChar && '[' !== $prevChar) { // If this character is the end of an element, // output a new line and indent the next line $result .= $newLine; for ($j = 0; $j < $pos; $j++) { $result .= $indentStr; } } else { // Collapse empty {} and [] $result = rtrim($result) . "\n\n" . $indentStr; } } $result .= $char; // If the last character was the beginning of an element, // output a new line and indent the next line if (',' === $char || '{' === $char || '[' === $char) { $result .= $newLine; if ('{' === $char || '[' === $char) { $pos++; } for ($j = 0; $j < $pos; $j++) { $result .= $indentStr; } } } // If buffer not empty after formating we have an unclosed quote if (strlen($buffer) > 0) { //json is incorrectly formatted $result = false; } return $result; } 

मुझे एहसास है कि यह प्रश्न एक सुंदर-स्वरूपित JSON स्ट्रिंग में एक एसोसिएटिव सरणी को एन्कोड करने के बारे में पूछ रहा है, इसलिए यह सीधे प्रश्न का उत्तर नहीं देता, लेकिन अगर आपके पास स्ट्रिंग है जो पहले से ही JSON प्रारूप में है, तो आप इसे बहुत आसान बना सकते हैं डीकोडिंग और फिर से एन्कोडिंग द्वारा (PHP> = 5.4 की आवश्यकता है):

 $json = json_encode(json_decode($json), JSON_PRETTY_PRINT); 

उदाहरण:

 header('Content-Type: application/json'); $json_ugly = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; $json_pretty = json_encode(json_decode($json_ugly), JSON_PRETTY_PRINT); echo $json_pretty; 

यह आउटपुट:

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

JSON_PRETTY_PRINT json_encode() और JSON_PRETTY_PRINT विकल्प के साथ संयोजन में <pre> उपयोग करें:

 <pre> <?php echo json_encode($dataArray, JSON_PRETTY_PRINT); ?> </pre> 

आप केंडल हॉपकिंस को संशोधित करने के लिए स्विच स्टेटमेंट में थोड़ा जवाब दे सकते हैं ताकि निम्नलिखित में एक जेसन स्ट्रिंग पास करके एक बहुत ही साफ दिख और अच्छी तरह से इंडेंटेड प्रिंटआउट प्राप्त कर सकें:

 function prettyPrint( $json ){ $result = ''; $level = 0; $in_quotes = false; $in_escape = false; $ends_line_level = NULL; $json_length = strlen( $json ); for( $i = 0; $i < $json_length; $i++ ) { $char = $json[$i]; $new_line_level = NULL; $post = ""; if( $ends_line_level !== NULL ) { $new_line_level = $ends_line_level; $ends_line_level = NULL; } if ( $in_escape ) { $in_escape = false; } else if( $char === '"' ) { $in_quotes = !$in_quotes; } else if( ! $in_quotes ) { switch( $char ) { case '}': case ']': $level--; $ends_line_level = NULL; $new_line_level = $level; $char.="<br>"; for($index=0;$index<$level-1;$index++){$char.="-----";} break; case '{': case '[': $level++; $char.="<br>"; for($index=0;$index<$level;$index++){$char.="-----";} break; case ',': $ends_line_level = $level; $char.="<br>"; for($index=0;$index<$level;$index++){$char.="-----";} break; case ':': $post = " "; break; case "\t": case "\n": case "\r": $char = ""; $ends_line_level = $new_line_level; $new_line_level = NULL; break; } } else if ( $char === '\\' ) { $in_escape = true; } if( $new_line_level !== NULL ) { $result .= "\n".str_repeat( "\t", $new_line_level ); } $result .= $char.$post; } echo "RESULTS ARE: <br><br>$result"; return $result; 

}

अब फ़ंक्शन सुंदरप्रिंट चलाएं ($ your_json_string); अपने php में इनलाइन और प्रिंटआउट का आनंद लें। यदि आप कम से कम है और कुछ कारणों से ब्रैकेट्स पसंद नहीं करते हैं, तो आप $char.="<br>"; जगह आसानी से उनसे छुटकारा पा सकते हैं $char.="<br>"; $char="<br>"; $ चार पर शीर्ष तीन स्विच मामलों में कैलगरी शहर के लिए Google मानचित्र एपीआई कॉल के लिए आपको ये मिलेगा

 RESULTS ARE: { - - - "results" : [ - - -- - - { - - -- - -- - - "address_components" : [ - - -- - -- - -- - - { - - -- - -- - -- - -- - - "long_name" : "Calgary" - - -- - -- - -- - -- - - "short_name" : "Calgary" - - -- - -- - -- - -- - - "types" : [ - - -- - -- - -- - -- - -- - - "locality" - - -- - -- - -- - -- - -- - - "political" ] - - -- - -- - -- - - } - - -- - -- - - - - -- - -- - -- - - { - - -- - -- - -- - -- - - "long_name" : "Division No. 6" - - -- - -- - -- - -- - - "short_name" : "Division No. 6" - - -- - -- - -- - -- - - "types" : [ - - -- - -- - -- - -- - -- - - "administrative_area_level_2" - - -- - -- - -- - -- - -- - - "political" ] - - -- - -- - -- - - } - - -- - -- - - - - -- - -- - -- - - { - - -- - -- - -- - -- - - "long_name" : "Alberta" - - -- - -- - -- - -- - - "short_name" : "AB" - - -- - -- - -- - -- - - "types" : [ - - -- - -- - -- - -- - -- - - "administrative_area_level_1" - - -- - -- - -- - -- - -- - - "political" ] - - -- - -- - -- - - } - - -- - -- - - - - -- - -- - -- - - { - - -- - -- - -- - -- - - "long_name" : "Canada" - - -- - -- - -- - -- - - "short_name" : "CA" - - -- - -- - -- - -- - - "types" : [ - - -- - -- - -- - -- - -- - - "country" - - -- - -- - -- - -- - -- - - "political" ] - - -- - -- - -- - - } - - -- - -- - - ] - - -- - - - - -- - -- - - "formatted_address" : "Calgary, AB, Canada" - - -- - -- - - "geometry" : { - - -- - -- - -- - - "bounds" : { - - -- - -- - -- - -- - - "northeast" : { - - -- - -- - -- - -- - -- - - "lat" : 51.18383 - - -- - -- - -- - -- - -- - - "lng" : -113.8769511 } - - -- - -- - -- - - - - -- - -- - -- - -- - - "southwest" : { - - -- - -- - -- - -- - -- - - "lat" : 50.84240399999999 - - -- - -- - -- - -- - -- - - "lng" : -114.27136 } - - -- - -- - -- - - } - - -- - -- - - - - -- - -- - -- - - "location" : { - - -- - -- - -- - -- - - "lat" : 51.0486151 - - -- - -- - -- - -- - - "lng" : -114.0708459 } - - -- - -- - - - - -- - -- - -- - - "location_type" : "APPROXIMATE" - - -- - -- - -- - - "viewport" : { - - -- - -- - -- - -- - - "northeast" : { - - -- - -- - -- - -- - -- - - "lat" : 51.18383 - - -- - -- - -- - -- - -- - - "lng" : -113.8769511 } - - -- - -- - -- - - - - -- - -- - -- - -- - - "southwest" : { - - -- - -- - -- - -- - -- - - "lat" : 50.84240399999999 - - -- - -- - -- - -- - -- - - "lng" : -114.27136 } - - -- - -- - -- - - } - - -- - -- - - } - - -- - - - - -- - -- - - "place_id" : "ChIJ1T-EnwNwcVMROrZStrE7bSY" - - -- - -- - - "types" : [ - - -- - -- - -- - - "locality" - - -- - -- - -- - - "political" ] - - -- - - } - - - ] - - - "status" : "OK" } 

रंग पूर्ण आउटपुट करें: टिनी समाधान

कोड:

 $s = '{"access": {"token": {"issued_at": "2008-08-16T14:10:31.309353", "expires": "2008-08-17T14:10:31Z", "id": "MIICQgYJKoZIhvcIegeyJpc3N1ZWRfYXQiOiAi"}, "serviceCatalog": [], "user": {"username": "ajay", "roles_links": [], "id": "16452ca89", "roles": [], "name": "ajay"}}}'; $crl = 0; $ss = false; echo "<pre>"; for($c=0; $c<strlen($s); $c++) { if ( $s[$c] == '}' || $s[$c] == ']' ) { $crl--; echo "\n"; echo str_repeat(' ', ($crl*2)); } if ( $s[$c] == '"' && ($s[$c-1] == ',' || $s[$c-2] == ',') ) { echo "\n"; echo str_repeat(' ', ($crl*2)); } if ( $s[$c] == '"' && !$ss ) { if ( $s[$c-1] == ':' || $s[$c-2] == ':' ) echo '<span style="color:#0000ff;">'; else echo '<span style="color:#ff0000;">'; } echo $s[$c]; if ( $s[$c] == '"' && $ss ) echo '</span>'; if ( $s[$c] == '"' ) $ss = !$ss; if ( $s[$c] == '{' || $s[$c] == '[' ) { $crl++; echo "\n"; echo str_repeat(' ', ($crl*2)); } } echo $s[$c]; 

यदि आपने केवल $json_string = json_encode($data, JSON_PRETTY_PRINT); , आप इस तरह ब्राउज़र में कुछ मिलेंगे (सवाल से फेसबुक लिंक का प्रयोग करके :)): यहां छवि विवरण दर्ज करें

लेकिन अगर आप JSONView जैसे क्रोम एक्सटेंशन (ऊपर दिए गए PHP विकल्प के बिना भी) का इस्तेमाल करते हैं, तो आपको एक अधिक सुंदर पठनीय debuggable समाधान मिलता है, जहां आप प्रत्येक एकल JSON ऑब्जेक्ट को आसानी से इस तरह से जोड़ सकते हैं: यहां छवि विवरण दर्ज करें

आप इसे नीचे की तरह कर सकते हैं

 $array = array( "a" => "apple", "b" => "banana", "c" => "catnip" ); foreach ($array as $a_key => $a_val) { $json .= "\"{$a_key}\" : \"{$a_val}\",\n"; } header('Content-Type: application/json'); echo "{\n" .rtrim($json, ",\n") . "\n}"; 

ऊपर की तरह फेसबुक की तरह उत्पादन होगा

 { "a" : "apple", "b" : "banana", "c" : "catnip" } 

PHP के लिए आसान तरीका> 5.4: फेसबुक ग्राफ़ में पसंद करें

 $Data = array('a' => 'apple', 'b' => 'banana', 'c' => 'catnip'); $json= json_encode($Data, JSON_PRETTY_PRINT); header('Content-Type: application/json'); print_r($json); 

ब्राउज़र में परिणाम

 { "a": "apple", "b": "banana", "c": "catnip" } 

यदि आपके पास मौजूदा JSON $ ugly_json है:

 echo nl2br(str_replace(' ', '&nbsp;', (json_encode(json_decode($ugly_json, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES)))); 

पुनरावर्ती समाधान के लिए क्लासिक केस ये मेरा:

 class JsonFormatter { public static function prettyPrint(&$j, $indentor = "\t", $indent = "") { $inString = $escaped = false; $result = $indent; if(is_string($j)) { $bak = $j; $j = str_split(trim($j, '"')); } while(count($j)) { $c = array_shift($j); if(false !== strpos("{[,]}", $c)) { if($inString) { $result .= $c; } else if($c == '{' || $c == '[') { $result .= $c."\n"; $result .= self::prettyPrint($j, $indentor, $indentor.$indent); $result .= $indent.array_shift($j); } else if($c == '}' || $c == ']') { array_unshift($j, $c); $result .= "\n"; return $result; } else { $result .= $c."\n".$indent; } } else { $result .= $c; $c == '"' && !$escaped && $inString = !$inString; $escaped = $c == '\\' ? !$escaped : false; } } $j = $bak; return $result; } } 

उपयोग:

 php > require 'JsonFormatter.php'; php > $a = array('foo' => 1, 'bar' => 'This "is" bar', 'baz' => array('a' => 1, 'b' => 2, 'c' => '"3"')); php > print_r($a); Array ( [foo] => 1 [bar] => This "is" bar [baz] => Array ( [a] => 1 [b] => 2 [c] => "3" ) ) php > echo JsonFormatter::prettyPrint(json_encode($a)); { "foo":1, "bar":"This \"is\" bar", "baz":{ "a":1, "b":2, "c":"\"3\"" } } 

चियर्स

PHP के लिए print_r सुंदर मुद्रित करें

उदाहरण PHP

 function print_nice($elem,$max_level=10,$print_nice_stack=array()){ if(is_array($elem) || is_object($elem)){ if(in_array($elem,$print_nice_stack,true)){ echo "<font color=red>RECURSION</font>"; return; } $print_nice_stack[]=&$elem; if($max_level<1){ echo "<font color=red>nivel maximo alcanzado</font>"; return; } $max_level--; echo "<table border=1 cellspacing=0 cellpadding=3 width=100%>"; if(is_array($elem)){ echo '<tr><td colspan=2 style="background-color:#333333;"><strong><font color=white>ARRAY</font></strong></td></tr>'; }else{ echo '<tr><td colspan=2 style="background-color:#333333;"><strong>'; echo '<font color=white>OBJECT Type: '.get_class($elem).'</font></strong></td></tr>'; } $color=0; foreach($elem as $k => $v){ if($max_level%2){ $rgb=($color++%2)?"#888888":"#BBBBBB"; }else{ $rgb=($color++%2)?"#8888BB":"#BBBBFF"; } echo '<tr><td valign="top" style="width:40px;background-color:'.$rgb.';">'; echo '<strong>'.$k."</strong></td><td>"; print_nice($v,$max_level,$print_nice_stack); echo "</td></tr>"; } echo "</table>"; return; } if($elem === null){ echo "<font color=green>NULL</font>"; }elseif($elem === 0){ echo "0"; }elseif($elem === true){ echo "<font color=green>TRUE</font>"; }elseif($elem === false){ echo "<font color=green>FALSE</font>"; }elseif($elem === ""){ echo "<font color=green>EMPTY STRING</font>"; }else{ echo str_replace("\n","<strong><font color=red>*</font></strong><br>\n",$elem); } } 

1 – json_encode($rows,JSON_PRETTY_PRINT); नए अक्षरों के साथ prettified डेटा देता है यह कमांड लाइन इनपुट के लिए उपयोगी है, लेकिन जैसा कि आपने पाया है वह ब्राउज़र के रूप में बहुत ही सुंदर नहीं दिखता है ब्राउज़र स्रोतों के रूप में नई लाइनें स्वीकार करेगा (और इस प्रकार, पृष्ठ स्रोत को देखने से वास्तव में सुंदर JSON दिखाई देगा), लेकिन वे ब्राउज़र में आउटपुट को प्रारूपित करने के लिए उपयोग नहीं किए जाते हैं ब्राउज़र को HTML की आवश्यकता होती है

2 – इस फाउंडेशन गिथूब का उपयोग करें

 <?php /** * Formats a JSON string for pretty printing * * @param string $json The JSON to make pretty * @param bool $html Insert nonbreaking spaces and <br />s for tabs and linebreaks * @return string The prettified output * @author Jay Roberts */ function _format_json($json, $html = false) { $tabcount = 0; $result = ''; $inquote = false; $ignorenext = false; if ($html) { $tab = "&nbsp;&nbsp;&nbsp;"; $newline = "<br/>"; } else { $tab = "\t"; $newline = "\n"; } for($i = 0; $i < strlen($json); $i++) { $char = $json[$i]; if ($ignorenext) { $result .= $char; $ignorenext = false; } else { switch($char) { case '{': $tabcount++; $result .= $char . $newline . str_repeat($tab, $tabcount); break; case '}': $tabcount--; $result = trim($result) . $newline . str_repeat($tab, $tabcount) . $char; break; case ',': $result .= $char . $newline . str_repeat($tab, $tabcount); break; case '"': $inquote = !$inquote; $result .= $char; break; case '\\': if ($inquote) $ignorenext = true; $result .= $char; break; default: $result .= $char; } } } return $result; } 

निम्नलिखित मेरे लिए क्या काम किया है:

Test.php की सामग्री:

 <html> <body> Testing JSON array output <pre> <?php $data = array('a'=>'apple', 'b'=>'banana', 'c'=>'catnip'); // encode in json format $data = json_encode($data); // json as single line echo "</br>Json as single line </br>"; echo $data; // json as an array, formatted nicely echo "</br>Json as multiline array </br>"; print_r(json_decode($data, true)); ?> </pre> </body> </html> 

उत्पादन:

 Testing JSON array output Json as single line {"a":"apple","b":"banana","c":"catnip"} Json as multiline array Array ( [a] => apple [b] => banana [c] => catnip ) 

एचटीएमएल में "प्री" टैग के इस्तेमाल पर ध्यान दें।

उम्मीद है कि किसी को मदद करता है

यदि आप एमवीसी के साथ काम कर रहे हैं

अपने नियंत्रक में ऐसा करने का प्रयास करें

 public function getLatestUsers() { header('Content-Type: application/json'); echo $this->model->getLatestUsers(); // this returns json_encode($somedata, JSON_PRETTY_PRINT) } 

तो अगर आप कॉल / मिलते हैं तो आपको एक सुंदर जेसन आउटपुट मिलेगा;)

केंडल हॉपकिंस को उत्तर देने के लिए मेरे पास पर्याप्त प्रतिष्ठा नहीं है, लेकिन मुझे उनके ब्रीफेटिफायर में एक बग मिला (यह अजीब तरह से आया था)

इस पंक्ति को संशोधित किया जाना चाहिए:

 if( $char === '"' && $prev_char != '\\' ) { 

सेवा मेरे

 if( $char === '"' && ($prev_char != '\\' && $prev_prev_char != '\\' ) { 

जब एक स्ट्रिंग एक बैकस्लैश के साथ समाप्त होती है तो प्रेट्टरिफायर अमान्य जेसन उत्पन्न करता है और पैदा करता है:

 "kittens\\"