사용법은 크게 json_encode(값), json_decode(값) 으로 사용된다.
php 페이지에서 php 페이지로 값을 넘길 때 사용하는법을 알아보겠다.
1. 반복문에 배열로 값을 넣는다.
for(){
$str[] = array('code'=>$bbs_no,'table'=>$table_type);
}
code[0] | table[0] |
code[1] | table[1] |
이렇게 넣을 것이다.
2. array값을 파라미터로 넘길 수 없으므로 값으로 바꾼다.
$jsonStr = json_encode($str);
3. $jsonStr 값을 히든값으로 넣는다.
주의할점은 따음표로 묶지 않는다.
<input type="hidden" name="json_list" id="json_list" value=$jsonStr />
폼을 전송한 후 받는쪽
$json_list = $_REQUEST['json_list'];
3. 역슬러쉬가 들어가므로 삭제해준다.
$json_list = str_replace('\\', '', $json_list);
4. json 배열로 만들어준다.
두번째 인자 true는 2개 이상의 배열로 되어있다는 것이다.
$json_list= json_decode($json_list, true);
출력
echo $json_list[0]['code'];
echo $json_list[1]['table'];
union으로 테이블을 중첩하여 글을 가져올 때 난감한 경우가 있다.
이럴때는 json으로 앞뒤 배열코드를 삽입 후 파라미터로 계속 보내면서 가져오면 된다.
// json배열을 이용해서 글 이전, 이후 알아내기
for($cnt=0; $cnt<count($json_list); $cnt++){
if($json_list[$cnt]['code']==비교할 값){
// 이전글
if($cnt > 0)
$upArr = array('code'=>$json_list[$cnt-1]['code'], 'table'=>$json_list[$cnt-1]['table']);
// 이후글
if($cnt+1 < count($json_list))
$downArr = array('code'=>$json_list[$cnt+1]['code'], 'table'=>$json_list[$cnt+1]['table']);
break;
}
}
// 이전글
$code = $upArr['code'];
$table = $upArr['table'];
// 이후글
$code = $downArr['code'];
$table = $downArr['table'];
아래는 facebook 에서 갖고 온 json값을 위의 예제를 통해 파싱하는 과정이다
// Fetch the viewer's basic information
$basic = $facebook->api('/me');
// echo "<pre>";
// print_r($basic);
$location = $basic['location'];
$locationName=$location['name'];
$work = $basic['work'];
$employer=$work[0]['employer']['name'];
$education = $basic['education'];
$concentration=$education[0]['concentration'];
$edumajor=$concentration[0]['name'];
$school=$education[0]['school'];
$schoolname=$school['name'];
// print_r($schoolname);
// echo "</pre>";