2017-03-09 10 views
1

私のjsonにjsonArrayを追加する必要があります.Jsonをモデル化するためにPHPクラス(User.php)を使用しています。このような:PHPどのように文字列のようなJsonに配列を追加する

class User { 
    public $id = ""; 
    public $nombre = ""; 
} 

そして私は、私はこのように私のコードでこれらのクラスを使用し

class ArrayUser { 
     public $usuarios; 
} 

最終JSONにクラスユーザからの配列を追加するために、他のクラス(ArrayUser.php)を使用します。

$tempArray = array(); 
$ArrayUser = new ArrayUser(); 
foreach ($sth as $sth) { 
     $user = new User(); 
     $user->id = $sth['id']; 
     $user->nombre = $sth['name']; 
     array_push($tempArray, $user); 
} 
$ax = json_encode($tempArray); 
$ArrayUser->usuarios = $ax; 
$axX = json_encode($ArrayUser, true); 

結果がこれです:

{ 
"usuarios": "[{"id":"1","nombre":"Leandro Gado"},{"id":"2","nombre":"Aitor Tilla"}]" 
} 

しかし、私は文字列のような配列は、(途中で有効なJSONではありません)したくない、実際に私はそのように私のJSONを必要とする:

{ 
    "usuarios": [{ 
     "id": "1", 
     "nombre": "Leandro Gado" 
    }, { 
     "id": "2", 
     "nombre": "Aitor Tilla" 
    }] 
} 

私はあなたの助けに感謝。よろしくです。 よろしくお願いします。

+4

"json配列"のようなものはありません。 [JSON](https://en.wikipedia.org/wiki/JSON)は、いくつかのデータ構造のテキスト表現です。あなたのデータ構造を構築し、それを['json_encode()'](http://php.net/manual/en/function.json-encode.php)に渡して、個々の部分をエンコードしないでください(btw、 json_encode()は 'true'ではなく数字です)。 JSONとしてエンコードしたいデータ構造体がオブジェクトの場合、そのクラスに['JsonSerializable'](http://php.net/manual/en/class.jsonserializable.php)インタフェースを実装させます。この方法で、エンコードされるオブジェクトプロパティとその方法を制御できます。 – axiac

+0

あなたの返事をありがとう、私はそれについてさらに研究するつもりです。お返事のための – irvineff7

答えて

1

問題は、データを2回json_encodeすることです。これを試してください:

$tempArray = array(); 
$ArrayUser = new ArrayUser(); 
foreach ($sth as $sth) { 
     $user = new User(); 
     $user->id = $sth['id']; 
     $user->nombre = $sth['name']; 
     array_push($tempArray, $user); 
} 
$ArrayUser->usuarios = $tempArray; 
$axX = json_encode($ArrayUser); 
+0

おかげで、それはほとんどあります、唯一の配列($ tempArrayは)そのように、末尾にカンマを残し: ' { "usuarios":[ { "ID": "1"、 "ノンブル": "レアンドロガドガド" } 、 { "ID": "2"、 "ノンブル": "アイトールTilla" } ]、 } ' はどのようにそのコンマを除去できますか? – irvineff7

関連する問題