안녕하세요 유창화입니다.
이번에 올리는 함수는 json_decode 입니다.
물론, json_encode 와 한쌍입니다.
그런데 왜, json_decode 로 제목을 정했냐하면......
제가 더 많이 쓰기 때문입니다.
요새는 ajax 가 일반적인 기술이 되었습니다.
ajax에서 데이타를 주고 받을때 주로 json 을 많이 이용합니다.
json 데이타를 php에서도 바로 받아서 활용할수 있게 만드는 함수가 json_decode 입니다.
어떻게 보면 내용은 변수를 일렬화 시키고 복구 한다는 차원에서는
serialize, unserialize 와 비슷합니다.
그러나, 일반적인 방법으로 자바스크립트와 같이 동시에 쓸수 있다는 점이 다릅니다.
{"title":"\uc544\ub984\ub2e4\uc6b4 \uc6b0\ub9ac\ub098\ub77c","content":"\uc5b4\uca4c\uad6c \uc800\uca4c\uad6c......"}
이런 데이타가 저장된 a.txt 라는 파일이 있다면
$text = file_get_contents('a.txt');
$a = json_decode($text);
print_r($a);
stdClass Object
(
[title] => 아름다운 우리나라
[content] => 어쩌구 저쩌구......
)
와 같이 반환 됩니다.
보시면 알겟지만 stdClass Object
이렇게 되어있습니다. 즉, 객체로 반환됩니다.
참고로 알아야 할 사항은
json_encode 나 json_decode 나 데이타는 모두 utf-8 형태이어야 합니다.
포탈의 서비스 중
공개된 json 데이타는 이함수를 통해서 얼마든지 이용할수 있습니다.
댓글 14개
14년 전
하루에 하나씩 올리신후 ... 책 쓰시면 되겠네요.
포인트경매에 협찬 좀 굽슨굽슨 (__)
포인트경매에 협찬 좀 굽슨굽슨 (__)
14년 전
ㅎㅎ 네...
고맙습니다.
고맙습니다.
14년 전
추천했사옵나이다~~~~~~~
14년 전
감사합니다~~~~~~
오늘은 더 점수 안올라간답니다. ㅠㅠ
오늘은 더 점수 안올라간답니다. ㅠㅠ
행복한남자
14년 전
외람된 질문이지만,, php 5.2 이상에서만 사용가능한 함수라고 본것같아서요..
5.2이상에서만 사용가능한건가요..?!
그렇다면.. 혹.. 그 이하 버전에는 개인적으로 쓰려고 만들어둔 함수가 혹시 있나 싶어서요..ㅋ
저도 추천 드려요!ㅋ
5.2이상에서만 사용가능한건가요..?!
그렇다면.. 혹.. 그 이하 버전에는 개인적으로 쓰려고 만들어둔 함수가 혹시 있나 싶어서요..ㅋ
저도 추천 드려요!ㅋ
14년 전
//json_encode
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)) return floatval(str_replace(",", ".", strval($a)));
if(is_string($a)){
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) . '}';
}
}
}
if (!function_exists('json_decode')){
function json_decode($json) {
$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;
}
}
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)) return floatval(str_replace(",", ".", strval($a)));
if(is_string($a)){
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) . '}';
}
}
}
if (!function_exists('json_decode')){
function json_decode($json) {
$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;
}
}
행복한남자
14년 전
감사합니다. 참고해서 유용하게 사용하겠습니다.
14년 전
만약 에러나면
static
은 지워도 됩니다.
static
은 지워도 됩니다.
14년 전
if (!function_exists('json_decode')){
function json_decode($json){
$comment = false;
$out = '$x=';
for ($i=0; $i<strlen($json); $i++){
if (!$comment){
if (($json[$i] == '{') || ($json[$i] == '['))
$out .= ' array(';
else if (($json[$i] == '}') || ($json[$i] == ']'))
$out .= ')';
else if ($json[$i] == ':')
$out .= '=>';
else
$out .= $json[$i];
}
else {
$out .= $json[$i];
}
if ($json[$i] == '"' && $json[($i-1)]!="\\") $comment = !$comment;
}
eval($out . ';');
return $x;
}
}
이게 더 정확한듯 합니다.
function json_decode($json){
$comment = false;
$out = '$x=';
for ($i=0; $i<strlen($json); $i++){
if (!$comment){
if (($json[$i] == '{') || ($json[$i] == '['))
$out .= ' array(';
else if (($json[$i] == '}') || ($json[$i] == ']'))
$out .= ')';
else if ($json[$i] == ':')
$out .= '=>';
else
$out .= $json[$i];
}
else {
$out .= $json[$i];
}
if ($json[$i] == '"' && $json[($i-1)]!="\\") $comment = !$comment;
}
eval($out . ';');
return $x;
}
}
이게 더 정확한듯 합니다.
14년 전
http://mike.teczno.com/JSON/JSON.phps
Terrorboy
14년 전
추천합니다.
\uc544\ub984\ub2e4\uc6b4 \uc6b0\ub9ac\ub098\ub77c이런 것은 무슨 암호화인가요?
써제스트하면서 json을 자세히 보았는데 {"id": "아이디", "value": "값", "info": "설명"} 처럼 암호화 없이 바로 쓰더라구요.
\uc544\ub984\ub2e4\uc6b4 \uc6b0\ub9ac\ub098\ub77c이런 것은 무슨 암호화인가요?
써제스트하면서 json을 자세히 보았는데 {"id": "아이디", "value": "값", "info": "설명"} 처럼 암호화 없이 바로 쓰더라구요.
14년 전
암호화 아니구요.
utf-8 문자열임을 뜻합니다.
같이 써도 상관없는데, 데이타가 utf-8이기만 하면 됩니다.
utf-8 문자열임을 뜻합니다.
같이 써도 상관없는데, 데이타가 utf-8이기만 하면 됩니다.
Terrorboy
14년 전
감사합니다~ 그런것이였군요 ㅎㅎ
14년 전
json_encode 를 평소에 많이 사용했었는데요. json_decode 도 좋네요.
좋은 정보 감사합니다.
좋은 정보 감사합니다.
게시판 목록
프로그램
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 4030 | 14년 전 | 2110 | ||
| 4029 |
|
14년 전 | 707 | |
| 4028 | 14년 전 | 3619 | ||
| 4027 | 14년 전 | 3748 | ||
| 4026 |
techer
|
14년 전 | 1124 | |
| 4025 |
techer
|
14년 전 | 687 | |
| 4024 | 14년 전 | 1359 | ||
| 4023 | 14년 전 | 602 | ||
| 4022 | 14년 전 | 924 | ||
| 4021 | 14년 전 | 513 | ||
| 4020 | 14년 전 | 7338 | ||
| 4019 | 14년 전 | 1027 | ||
| 4018 | 14년 전 | 444 | ||
| 4017 | 14년 전 | 600 | ||
| 4016 | 14년 전 | 1303 | ||
| 4015 | 14년 전 | 734 | ||
| 4014 | 14년 전 | 566 | ||
| 4013 | 14년 전 | 688 | ||
| 4012 | 14년 전 | 617 | ||
| 4011 |
브라운벤취
|
14년 전 | 426 | |
| 4010 |
크라잉감튀
|
14년 전 | 594 | |
| 4009 | 14년 전 | 574 | ||
| 4008 | 14년 전 | 564 | ||
| 4007 | 14년 전 | 639 | ||
| 4006 |
네비플러스
|
14년 전 | 880 | |
| 4005 | 14년 전 | 896 | ||
| 4004 | 14년 전 | 1119 | ||
| 4003 | 14년 전 | 779 | ||
| 4002 |
핑크스파이더
|
14년 전 | 700 | |
| 4001 | 14년 전 | 578 | ||
| 4000 |
BYongLuv
|
14년 전 | 548 | |
| 3999 |
xxbobo
|
14년 전 | 531 | |
| 3998 | 14년 전 | 715 | ||
| 3997 | 14년 전 | 1930 | ||
| 3996 | 14년 전 | 582 | ||
| 3995 | 14년 전 | 909 | ||
| 3994 |
asdfdasfddd
|
14년 전 | 2078 | |
| 3993 | 14년 전 | 1181 | ||
| 3992 | 14년 전 | 953 | ||
| 3991 | 14년 전 | 4689 | ||
| 3990 |
Torrious
|
14년 전 | 1898 | |
| 3989 | 14년 전 | 767 | ||
| 3988 |
내꿈은대통령
|
14년 전 | 640 | |
| 3987 | 14년 전 | 617 | ||
| 3986 |
|
14년 전 | 478 | |
| 3985 | 14년 전 | 1738 | ||
| 3984 | 14년 전 | 3059 | ||
| 3983 | 14년 전 | 553 | ||
| 3982 | 14년 전 | 749 | ||
| 3981 | 14년 전 | 1733 | ||
| 3980 | 14년 전 | 602 | ||
| 3979 |
AMDbest
|
14년 전 | 1253 | |
| 3978 |
leadK
|
14년 전 | 1601 | |
| 3977 |
좋은천사7
|
14년 전 | 10383 | |
| 3976 |
좋은천사7
|
14년 전 | 1128 | |
| 3975 |
좋은천사7
|
14년 전 | 941 | |
| 3974 |
좋은천사7
|
14년 전 | 1659 | |
| 3973 |
좋은천사7
|
14년 전 | 1695 | |
| 3972 |
좋은천사7
|
14년 전 | 869 | |
| 3971 |
김준수사랑
|
14년 전 | 971 | |
| 3970 |
레인보우1492
|
14년 전 | 788 | |
| 3969 | 14년 전 | 2421 | ||
| 3968 | 14년 전 | 583 | ||
| 3967 | 14년 전 | 729 | ||
| 3966 | 14년 전 | 1785 | ||
| 3965 | 14년 전 | 2070 | ||
| 3964 |
방황하는중년
|
14년 전 | 515 | |
| 3963 |
네비플러스
|
14년 전 | 894 | |
| 3962 | 14년 전 | 679 | ||
| 3961 | 14년 전 | 733 | ||
| 3960 | 14년 전 | 929 | ||
| 3959 | 14년 전 | 740 | ||
| 3958 |
techer
|
14년 전 | 651 | |
| 3957 |
techer
|
14년 전 | 469 | |
| 3956 |
techer
|
14년 전 | 442 | |
| 3955 |
techer
|
14년 전 | 671 | |
| 3954 |
8제임스8
|
14년 전 | 824 | |
| 3953 |
구름1354
|
14년 전 | 646 | |
| 3952 |
8제임스8
|
14년 전 | 617 | |
| 3951 | 14년 전 | 2436 | ||
| 3950 | 14년 전 | 956 | ||
| 3949 | 14년 전 | 1103 | ||
| 3948 | 14년 전 | 1077 | ||
| 3947 | 14년 전 | 1511 | ||
| 3946 |
|
14년 전 | 1900 | |
| 3945 | 14년 전 | 596 | ||
| 3944 |
|
14년 전 | 779 | |
| 3943 | 14년 전 | 1812 | ||
| 3942 | 14년 전 | 802 | ||
| 3941 | 14년 전 | 2100 | ||
| 3940 |
내일은없다
|
14년 전 | 588 | |
| 3939 | 14년 전 | 786 | ||
| 3938 | 14년 전 | 894 | ||
| 3937 | 14년 전 | 2010 | ||
| 3936 | 14년 전 | 832 | ||
| 3935 | 14년 전 | 3199 | ||
| 3934 | 14년 전 | 967 | ||
| 3933 | 14년 전 | 499 | ||
| 3932 | 14년 전 | 828 | ||
| 3931 |
Jos87
|
14년 전 | 674 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기