2013-05-17 2 views
1

json 양식 mysql 데이터베이스로 데이터를 제공하는 webservice가 있습니다.PHP/MySQL에서 JSON 데이터의 형식을 사용자 정의

PHP의 웹 서비스는

<?php 
    $conn = mysql_connect('localhost','root',''); 
    mysql_select_db('db', $conn); 
    $query = mysql_query("SELECT id,group FROM faq"); 
    //$query content is: 
    // Array ([id]=>faq1 [group]=>hardware) Array ([id]=>faq2 [group]=>software) 

    $faq = array(); 
    while($row = mysql_fetch_assoc($query)) { 
     $faq[] = $row // <= ???????? 
    } 

    header('Content-type: application/json'); 
    return json_encode($faq); 
?> 

내가 할 JSON 출력은

[ 
    { 
     "id": "faq1", 
     "group": "hardware" 
    }, 
    { 
     "id": "faq2", 
     "group": "software" 
    } 
] 

내가 원하는 JSON 출력해야하는

[ 
    { 
     "id": "faq1", 
     "group": { 
      "id": "hardware" 
     } 
    }, 
    { 
     "id": "faq2", 
     "group": { 
      "id": "software" 
     } 
    } 
] 

결과로이 JSON 데이터를 가져오고 싶지만 실제로는 성공하지 못했습니다. 그렇다면이 json 결과를 얻기 위해 어떻게 "PHP 웹 서비스"를 편집해야합니까?

+2

하지 대답하지만'mysql_'이되지 않습니다, 사용' mysqli_' 대신 – naththedeveloper

+0

그래서, 무엇이 잘못 되었나요? –

+0

현재 코드는 무엇을 출력합니까? –

답변

5
$faq = array(); 
while($row = mysql_fetch_assoc($query)) { 
    $faq[] = array(
     'id' => $row['id'], 
     'group' => array(
     'id' => $row['group'] 
     ) 
    ); 
} 
2

이 첫 번째 마십시오 :이

$arr = array(); 
$id = 0; 
while($row = mysql_fetch_assoc($query)) { 
    $arr[$i]['id'] = $row['id']; 
    $arr[$i]['group']['id'] = $row['group']; 
    $i++; 
} 

$json = json_encode($arr); 
1

구조 배열이 시도 :

$arrayJson["id"] = $row["id"]; 
$arrayJson["group"]["id"] = $row["group"]; 
echo json_encode($arrayJson) 
+0

'$ id = 0;'을'$ i = 0; '으로 변경하면 이것은 또한 작동합니다. 그러나 @Michael Marr의 길은 나에게 더 쉬운 것처럼 보인다. 물론 감사합니다! –

0

같은

$row['group'] = Array('id' => $row['group']); 
+0

@chandresh_cool과 같이'$ i' 카운터를 사용하지 않으면 while 루프 다음에 하나의 객체 (마지막 객체) 만 나타납니다. 어쨌든 고마워. –

+0

예, 여러 행을 잊어 버렸습니다. – Stephan

관련 문제