2012-01-12 4 views
0

イム:JSONエンコードの問題PHPのエンコード機能でこれを作成しようと

{ 
"foo": [ 
    { 
    "bar": "111" 
    } 
] 
} 

しかし、私はいくつかのPHPの配列とJSONエンコーディングで管理することができ、すべてがこれです:

明らか
{ 
"foo": [ 
    "{ 
     \"bar\":184530" 
    }" 
] 
} 

私は「ドンオブジェクトを文字列ではなくオブジェクトとして指定します。したがって、引用符は不要です。ここで

は私のPHPです:

$stmt->execute(); 
    $stmt->bind_result($bar); 
    while ($stmt->fetch()) { 
     $activity_array = array("bar" => $bar);     
     $activity_json = json_encode($activity_array); 
     $json_array[] = $activity_json; 
    } 

    $json = json_encode($json_array); 
    echo '{ "foo": ' .$json .'}'; 

答えて

4

はJSONとしてあなたのデータ構造のビットを符号化しないでください。最終的なデータ構造のみをエンコードします。

$activity_json = json_encode($activity_array); 

これにより、JSONとしてエンコードされた配列に格納されたJSONとしてエンコードされた配列が作成されます。

配列(JSONのビットではない)を含む配列(JSONとしてエンコードされたもの)が必要です。

+0

、どうもありがとう!また、$ json_array [] = $ activity_array; – MaikelS

+0

'json_encode'は文字列を返しますので、" JSONのビット "は単なる文字列です。あなたは文字列の配列をエンコードするだけです。 –

1

json_encodeはPHP配列をとり、JSONに変換します。 JSONとして配列を作成せず、通常の配列を作成してからjson_encodeを作成します。

$arr = array('foo' => array(
    array('bar' => 111) 
)); 
echo json_encode($arr); 

だから、単にアレイを構築し、その後、echo json_encode($json_array);

あなたの質問内のオブジェクトを作成するたとえば、あなたはこれを行うだろう。

$stmt->execute(); 
$stmt->bind_result($bar); 
while ($stmt->fetch()) { 
    $activity_array = array("bar" => $bar); 
    $json_array[] = $activity_json; 
} 

$json = json_encode(array('foo' => $json_array)); 
echo $json; 
0

little PHP libraryを使用できます。それはヘッダーを送信し、それを簡単に使用するオブジェクトを与えます。

それは次のようになります。それがあったことを

<?php 
// Include the json class 
include('includes/json.php'); 

// Then create the PHP-Json Object to suits your needs 

// Set a variable ; var name = {} 
$Json = new json('var', 'name'); 
// Fire a callback ; callback({}); 
$Json = new json('callback', 'name'); 
// Just send a raw JSON ; {} 
$Json = new json(); 

// Build data 
$object = new stdClass(); 
$object->test = 'OK'; 
$arraytest = array('1','2','3'); 
$jsonOnly = '{"Hello" : "darling"}'; 

// Add some content 
$Json->addContent(new propertyJson('width', '565px')); 
$Json->addContent(new textJson('You are logged IN')); 
$Json->addContent(new objectJson('An_Object', $object)); 
$Json->addContent(new arrayJson("An_Array",$arraytest)); 
$Json->addContent(new jsonJson("A_Json",$jsonOnly)); 

// Finally, send the JSON. 

json_send($Json) 
?> 
関連する問題