2012-12-14 9 views
5

約2時間json_encodingを試していますが、必要に応じて出力が得られません。親子カテゴリのPHP json_encodingデータ

include_once("class_connection.php"); 

//Getting the Parent Category 

$sqlStr = mysql_query("select catname , id from `category` where `parentid`='0'"); 
$jsonArray = array(); 

while ($fetchStr = mysql_fetch_assoc($sqlStr)) { 

    $jsonArray[] = array("ParentCategory" => $fetchStr["catname"]); 
     $id = $fetchStr['id']; 

    //Getting child categories from the above parent 

    $sqlChildStr = mysql_query("SELECT catname,id,parentid FROM `category` where `parentid`='$id'"); 

    while ($fetchchildStr = mysql_fetch_assoc($sqlChildStr)) { 

     $jsonArray[] = array("ChildCategory" => $fetchchildStr["catname"]); 
    } 

} 

echo json_encode(array("JsonOutput" => $jsonArray)) . "<br />"; 

出力は次のとおりです:ここで

"JsonOutput":[{"ParentCategory":"Animals"},{"ChildCategory":"Bear"},{"ChildCategory":"Deer"},{"ChildCategory":"Dolphins"}, 
{"ParentCategory":"Art"},{"ChildCategory":"Hand Painting"},{"ChildCategory":"Painting"},{"ChildCategory":"3D"},{"ChildCategory":"Abstract"}]} 

実はこれは私が下記のhere.Theコードを説明します形式で求めているモバイルアプリケーション開発者のための要件は、私が試したものです上記の出力では、親カテゴリ配列は子カテゴリ配列なしで空です。私は、その親カテゴリアレイ内のすべての子カテゴリの配列を格納したいし、最終的に私は

"JsonOutput":[{ 
"ParentCategory":"Animals" : [{ 
    {"ChildCategory":"Bear"},{"ChildCategory":"Deer"},{"ChildCategory":"Dolphins"} 
]} 
"ParentCategory":"Arts" : [{ 
    {"ChildCategory":"Hand Painting"},{"ChildCategory":"Painting"},{"ChildCategory":"3D"}, {"ChildCategory":"Abstract"} 
]} 
]} 
+3

希望する出力が有効なJSONのように見えません。 –

+4

あなたはJSON出力をフォーマット(またはあくまで)しようとしているようです。しかし、なぜそれが最初に必要なのでしょうか?人間はそれを処理しようとしていますか? –

+0

@Pekka:もっと詳しく見てみると、それは必ずしも美化に関するものではありません。「ParentCategory」:「Animals」:[{'< - 無効なJSONの作成についてです。 – hakre

答えて

2

おそらく、(唯一の重要なビットを示している)これを実行する必要があります。

$jsonArray = array(); 
while ($parentCat = mysql_fetch_assoc($sqlStr)) { 
    $temp = array(
     "ParentCategory" => $parentCat["catname"] 
    ); 
    while ($childCat = mysql_fetch_assoc($sqlChildStr)) { 
     $temp["ChildCategory"][] = array(
      "ChildCategory" => $childCat["catname"] 
     ); 
    } 
    $jsonArray[] = $temp; 
} 

私は保存するための一時的な変数を使用親カテゴリを操作します。これは、ループの最後にメイン配列に追加されます。

+0

助けてくれてありがとうございます。うまくいきます。 – raduns

0

次のコードを使用してくださいとして出力したいのでJsonOutput配列に親と子カテゴリの両方を格納する必要があり、与えますwhileループ内のインデックス...

$jsonArray = {}; 
while ($fetchStr = mysql_fetch_assoc($sqlStr)) { 

    //$jsonArray[] = array("ParentCategory" => $fetchStr["catname"]); 
     $id = $fetchStr['id']; 

    //Getting child categories from the above parent 

    $sqlChildStr = mysql_query("SELECT catname,id,parentid FROM `category` where `parentid`='$id'"); 

    while ($fetchchildStr = mysql_fetch_assoc($sqlChildStr)) { 

     $jsonArray["ParentCategory"][$fetchStr["catname"]] = array("ChildCategory" => $fetchchildStr["catname"]); 
    } 

} 

echo json_encode(array("JsonOutput" => $jsonArray)) . "<br />"; 
関連する問題