CI 묻고 답하기

제목 JSON 처음 대괄호 삭제방법 질문드립니다.
글쓴이 일용직노동자 작성시각 2014/09/18 04:36:15
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 31755   RSS
CI를 이용한 쇼핑몰 구현중입니다. 
JSON으로 출력하고 AJAX로 상품목록 처리할려는데 

JSON 처음 [](대괄호)때문에 deps를 제대로 못찾는 것 같습니다. 


    { 
        "result": [ 
            { 
                "item": { 
                    "iNo": "156", 
                    "IName": "동아 애니볼 4색볼펜", 
                    "IImg2": "http://www.a.com/file/itemimg/550_380/a.jpg", 
                    "I_SET_TYPE": "N", 
                    "IAskKum": "1500", 
                    "URL": "http://www.a.com/item/?cNo=231&iNo=151236" 
                } 
            } 
        ] 
    } 


여기서 처음 과 마지막 []을 삭제하고싶은데 어떻게해야되나요?

--- model 소스  ---


function shoppingItemlist(){

        //$this->db->select('*');
        //$this->db->from('blogs');
        //$this->db->join('comments', 'comments.id = blogs.id');
        //$query = $this->db->get();
        // 생성결과: 
        // SELECT * FROM blogs
        // JOIN comments ON comments.id = blogs.id
        // 레퍼런스 참고 : http://cikorea.net/user_guide_2.1.0/database/active_record.html
         
         $itemList['result'] = array(); //아이템리스트 배열
         $removeLF = array(); //개행문자 제거를 위한 배열 선언

         $imgSrc = "http://a.com/file/itemimg/550_380/"; 
         $httpSrc = "http://a.com/item/?";
         $itemSrc = "iNo=";
         $categorySrc = "cNo=";
         $where = "I_STOCK_STATE='Y'";
        
        $this->db->select('
            Category.C_CODE,
               Category.I_CODE,
               Item.IDX,
               Item.I_KOR_NAME,
               Item.I_LIST_IMG2,
               Item.I_SET_TYPE,
               Item.I_ASK_PRICE', FALSE); //'' escape처리를 위한 2번째파라미터 false    

        $this->db->from('TBL_ITEM AS Item');
        $this->db->join('TBL_DISPLAY AS Category', 'Category.I_CODE = Item.IDX', 'INNER');                
        $this->db->where($where);    
        $this->db->order_by("C_CODE", "ASC");
        
        $query = $this->db->get();
        
        if ($query->num_rows() > 0){                     //query의 결과가 1행이상 있을시
               foreach ($query->result_array() as $rows){     //array로 결과값출력 rows로 result함수 사용불가    
                   $removeLF = preg_replace("/\n/", "", $rows['I_LIST_IMG2']); //개행문자 제거 
                 
                 $item['item'] = Array (
                             
                             "INo" => $rows['IDX'],
                             "IName"  => urlencode($rows['I_KOR_NAME']),
                             "IImg2" => urlencode($imgSrc).$removeLF,
                             "I_SET_TYPE"  => $rows['I_SET_TYPE'],
                             "IAskKum" => $rows['I_ASK_PRICE'],
                             "Url" => urlencode($httpSrc).$categorySrc.
                             $rows['C_CODE']."&".$itemSrc.$rows['IDX']
                         
                         ); //json 배열저장
                 array_push($itemList['result'], $item);
                 //var_dump($rows);
               }
    }        
        return $itemList;            
    }
    
}//EOF

--- controller 소스 ---

function shoppingItemlist(){    
        $this->output->set_header('Content-Type: application/json; charset=utf-8');
        $query = $this->getitems->shoppingItemlist();
        $itemList_ret = json_encode(array($query));
        echo urldecode($itemList_ret);
        //var_dump($query);
    }

--- view에서 ajax 컨트롤 소스 ---

$.ajax({
        type    : "POST"
       ,url     : "http://www.a.com/getdata/shoppingItemlist"
       ,async    : false
       ,dataType: "JSON"
       ,success : loadItemlist
    });

    function loadItemlist(json){

        var item_list = json.result;
        var item_cnt  = item_list.length;

        $.each(item_list, function(key){

            var item_info = item_list[key].item;

            var item_idx  = item_info.INo;
            var item_name = item_info.IName;
            var item_imgSrc = item_info.IImg2;
            var item_price = item_info.IAskKum;
            var item_url  = item_info.Url;
        
            var strHtml = "";

            strHtml += '
';
            strHtml += '
';
            strHtml += '상품이미지';
            strHtml += '
';
            strHtml += '
';
            strHtml += '
'+item_name+'
';
            strHtml += '
'+price+'원';
            strHtml += '
';
            strHtml +='
';
            strHtml +='
';

            $('.tvShopping_contents').append(strHtml);
        });

    }
 다음글 임시 테이블 생성...문제 (4)
 이전글 기본 베이스는 영카트5를 그대로 쓰고 새로운 기능은 코... (3)

댓글

변종원(웅파) / 2014/09/18 08:04:54 / 추천 0
결과가 여러개이면 정상이구요. 한개라면 row_array()로 해야 대괄호가 없어집니다.
일용직노동자 / 2014/09/18 10:23:42 / 추천 0
$itemList_ret = json_encode(array($query)); 이걸 $itemList_ret = json_encode($query);로 바꿔서 해결됬습니다