YesYo.com MintState Forums  
뒤로    YesYo.com MintState BBS > Tech > PHP
검색
멤버이름  오토
비밀번호 
 

 
작성일 : 10-01-13 14:51
[Function] json_encode(), json_decode()
 글쓴이 : MintState
조회 : 14,762  
[Function] json_encode(), json_decode()

json_encode — Returns the JSON representation of a value (PHP 5 >= 5.2.0, PECL json >= 1.2.0)
배열을 json형태로 만들어 주는 함수 입니다. PHP5 이상 버전만 가능합니다.

string json_encode ( mixed $value [, int $options = 0 ] )
Returns a string containing the JSON representation of value .

Parameters
value - The value being encoded. Can be any type except a resource. This function only works with UTF-8 encoded data.
options - Bitmask consisting of JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_FORCE_OBJECT.

Examples
<?php
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);

echo json_encode($arr);
?>

output:


<?php
$a = array('<foo>',"'bar'",'"baz"','&blong&');

echo "Normal: ", json_encode($a), "\n";
echo "Tags: ",   json_encode($a,JSON_HEX_TAG), "\n";
echo "Apos: ",   json_encode($a,JSON_HEX_APOS), "\n";
echo "Quot: ",   json_encode($a,JSON_HEX_QUOT), "\n";
echo "Amp: ",    json_encode($a,JSON_HEX_AMP), "\n";
echo "All: ",    json_encode($a,JSON_HEX_TAG|JSON_HEX_APOS|JSON_HEX_QUOT|JSON_HEX_AMP), "\n\n";

$b = array();

echo "Empty array output as array: ", json_encode($b), "\n";
echo "Empty array output as object: ", json_encode($b, JSON_FORCE_OBJECT), "\n\n";

$c = array(array(1,2,3));

echo "Non-associative array output as array: ", json_encode($c), "\n";
echo "Non-associative array output as object: ", json_encode($c, JSON_FORCE_OBJECT), "\n\n";
?>

output:



* PHP4 버전은 아래의 함수를 참조하십시오.
<?php
/*
Convert PHP array to JSON
--
Using:
- on server side: echo(arr2json([PHP array]))
- on client side(JavaScript): var obj = eval('(' + [XMLHTTPRequest.responseText] + ')');
*/
function arr2json($arr){
	foreach($arr as $k=>&$val) $json[] = $k.':'.php2js($val);
	if(count($json) > 0) return '{'.implode(',', $json).'}';
	else return '';
}
function php2js($val){
	if(is_array($val)) return arr2json($val);
	if(is_string($val)) return '"'.addslashes($val).'"';
	if(is_bool($val)) return 'Boolean('.(int) $val.')';
	if(is_null($val)) return '""';
	return $val;
}
?>


<?
if (!function_exists('json_encode')) {
		function json_encode($a=false) {
				if (is_null($a)) return 'null';
				if ($a === false) return 'false';
				if ($a === true) return 'true';
				if (is_scalar($a)) {
				if (is_float($a)) {
						// Always use "." for floats.
						return floatval(str_replace(",", ".", strval($a)));
				}
				if (is_string($a)) {
						// MintState Insert
						$a = preg_replace('{(</)(script)}i', "$1'+'$2", $a);
						// All scalars are converted to strings to avoid indeterminism.
						// PHP's "1" and 1 are equal for all PHP operators, but
						// JS's "1" and 1 are not. So if we pass "1" or 1 from the PHP backend,
						// we should get the same result in the JS frontend (string).
						// Character replacements for JSON.
						static $jsonReplaces = array(array("\\", "/", "\n", "\t", "\r", "\b", "\f", '"'), array('\\\\', '\\/', '\\n', '\\t', '\\r', '\\b', '\\f', '\"'));
						return '"' . str_replace($jsonReplaces[0], $jsonReplaces[1], $a) . '"';
				}
				else return $a;
				}
				$isList = true;
				for ($i = 0, reset($a); $i < count($a); $i++, next($a)) {
						if (key($a) !== $i) {
								$isList = false;
								break;
						}
				}
				$result = array();
				if ($isList) {
						foreach ($a as $v) $result[] = json_encode($v);
						return '[ ' . join(', ', $result) . ' ]';
				}
				else
				{
						foreach ($a as $k => $v) $result[] = json_encode($k).': '.json_encode($v);
						return '{ ' . join(', ', $result) . ' }';
				}
		}
}
?>



json_decode — Decodes a JSON string (PHP 5 >= 5.2.0, PECL json >= 1.2.0)
배열을 json형태로 만들어 주는 함수 입니다. PHP5 이상 버전만 가능합니다.

mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 ]] )
Takes a JSON encoded string and converts it into a PHP variable.

Parameters
json - The json string being decoded.
assoc - When TRUE, returned objects will be converted into associative arrays.
depth - User specified recursion depth.
 
Examples
<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

var_dump(json_decode($json));
var_dump(json_decode($json, true));
?>

output:


<?php
$json = '{"foo-bar": 12345}';

$obj = json_decode($json);
print $obj->{'foo-bar'}; // 12345
?>


<?php
// Encode the data.
$json = json_encode(
    array(
        1 => array(
            'English' => array(
                'One',
                'January'
            ),
            'French' => array(
                'Une',
                'Janvier'
            )
        )
    )
);

// Define the errors.
$json_errors = array(
    JSON_ERROR_NONE => 'No error has occurred',
    JSON_ERROR_DEPTH => 'The maximum stack depth has been exceeded',
    JSON_ERROR_CTRL_CHAR => 'Control character error, possibly incorrectly encoded',
    JSON_ERROR_SYNTAX => 'Syntax error',
);

// Show the errors for different depths.
foreach(range(4, 3, -1) as $depth) {
    var_dump(json_decode($json, True, $depth));
    echo 'Last error : ', $json_errors[json_last_error()], PHP_EOL, PHP_EOL;
    }
?>

output:



* PHP4 버전은 아래의 함수를 참조하십시오.
<?php 
if ( !function_exists('json_decode') ){ 
		function json_decode($json) {  
				// Author: walidator.info 2009 
				$comment = false; 
				$out = '$x='; 

				for ($i=0; $i<strlen($json); $i++)  { 
						if (!$comment) { 
								if ($json[$i] == '{') $out .= ' array('; 
								else if ($json[$i] == '}') $out .= ')'; 
								else if ($json[$i] == ':') $out .= '=>'; 
								else $out .= $json[$i];            
						} 
						else $out .= $json[$i]; 
						if ($json[$i] == '"')    $comment = !$comment; 
				} 
				eval($out . ';'); 
				return $x; 
		}
}
$json_data = '{"response": { "Text":"Hello there" }, "Details": null, "Status": 200} '; 

print_r(json_decode($json_data));
?>
Rated 0/5 (0%) (0 Votes)

(\__/)
(='.'=)
(")_(")~
Search Infomation by MintState
MintState

 
 

Total 160
번호 제   목 글쓴이 날짜 조회
160 첫문자를 대문자, 소문자로 변경하는 함수 MintState 08-08 245
159 header를 이용한 페이지 이동 함수 MintState 07-31 247
158 URL에서 한글만 인코딩 MintState 05-29 349
157 youtube preg_replace pattern MintState 02-22 635
156 특정 디렉토리의 하위파일 목록 가져오기 MintState 02-21 631
155 [정규식] 해시태그(#) 뽑아내기 MintState 11-12 2530
154 serialize unserialize 배열정보를문자열의 형태로 변환 MintState 12-08 2553
153 실시간 화면 출력 flush, ob_flush MintState 02-26 4999
152 [MYSQL] 생년월일로 나이 반환 MintState 01-22 7027
151 php 절사 MintState 07-27 4889
150 Referer URL 이용하여 검색엔진 키워드 뽑아내기 MintState 02-10 5437
149 달력 소스 MintState 10-21 5692
148 MYSQL 예약어 MintState 05-02 7925
147 페이징 클래스 v1.0 (PHP4/5) MintState 04-18 6767
146 GD 라이브러리 MintState 04-17 7312
145 GD를 이용한 기본기능 썸네일,CROP,CROP썸네일,텍스트 만들기 MintState 04-17 6883
144 xml 통신(수신) - Web 언어별 MintState 03-14 7224
143 무조건 알아야 할 PHP 속도 테스트 14 가지 MintState 03-04 6955
142 PHP를 이용하여 MYSQL Sleep 프로세스 죽이기 MintState 01-18 8547
141 youtube 주소로 정보 반환 MintState 07-02 8703
140 방문자의 브라우저와 OS등을 가져 오는 클레스 MintState 07-02 11205
139 Allowed memory size Error 발생시 처리방법 MintState 06-30 9168
138 AES 256-bit 암호화 MintState 04-28 14648
137 PHP 5.3.0 부터 POSIX Regex 함수 제거 MintState 02-12 8513
136 [Function] json_encode(), json_decode() MintState 01-13 14763
 1  2  3  4  5  6  7  
모바일 버전으로 보기
CopyRight ©2004 - 2017, YesYo.com MintState. ™