PHP でオブジェクトに対して json_encode を使用する (スコープに関係なく)
2023-10-03 22:22:20
質問
オブジェクトのリストをjsonで出力しようとしているのですが、オブジェクトを
json_encode
? 私が持っているコードは次のようなものです。
$related = $user->getRelatedUsers();
echo json_encode($related);
今現在は、ユーザーの配列を繰り返し、それぞれを配列にエクスポートして
json_encode
の配列にエクスポートして、私用に使える json に変換しています。 オブジェクトを反復可能にすることはすでに試しましたが
json_encode
はとにかくそれらをスキップするようです。
編集 : ここで、var_dump()です。
php > var_dump($a);
object(RedBean_OODBBean)#14 (2) {
["properties":"RedBean_OODBBean":private]=>
array(11) {
["id"]=>
string(5) "17972"
["pk_UniversalID"]=>
string(5) "18830"
["UniversalIdentity"]=>
string(1) "1"
["UniversalUserName"]=>
string(9) "showforce"
["UniversalPassword"]=>
string(32) ""
["UniversalDomain"]=>
string(1) "0"
["UniversalCrunchBase"]=>
string(1) "0"
["isApproved"]=>
string(1) "0"
["accountHash"]=>
string(32) ""
["CurrentEvent"]=>
string(4) "1204"
["userType"]=>
string(7) "company"
}
["__info":"RedBean_OODBBean":private]=>
array(4) {
["type"]=>
string(4) "user"
["sys"]=>
array(1) {
["idfield"]=>
string(2) "id"
}
["tainted"]=>
bool(false)
["model"]=>
object(Model_User)#16 (1) {
["bean":protected]=>
*RECURSION*
}
}
}
で、json_encodeが出すのはこんな感じです。
php > echo json_encode($a);
{}
結局、これだけになってしまいました。
function json_encode_objs($item){
if(!is_array($item) && !is_object($item)){
return json_encode($item);
}else{
$pieces = array();
foreach($item as $k=>$v){
$pieces[] = "\"$k\":".json_encode_objs($v);
}
return '{'.implode(',',$pieces).'}';
}
}
これは、これらのオブジェクトの完全な配列または単一のインスタンスを取り、それらをjsonに変換します - 私はjson_encodeの代わりにこれを使用しています。 私はそれをより良くすることができる場所があると確信していますが、私はjson_encodeがその公開されたインタフェースに基づいてオブジェクトを介して反復するタイミングを検出することができるだろうと期待していました。
どのように解決するのですか?
RedBeanPHP 2.0では、ビーンのコレクション全体を配列に変換する大量エクスポート関数が用意されています。これはJSONエンコーダーで動作します。
json_encode( R::exportAll( $beans ) );
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Notice: 非オブジェクトのプロパティを取得しようとしているエラー
-
[解決済み】接続の取得に失敗しました: php_network_getaddresses: getaddrinfo failed: 名前またはサービスが不明
-
[解決済み】ディレクトリ内のファイル数を数える PHP
-
[解決済み】mysqli_select_db()は、パラメータ1がmysqliであることを期待し、文字列が与えられる。
-
[解決済み】既に開始されているPHPセッション【重複あり
-
[解決済み] * vchiqインスタンスを開くのに失敗しました。
-
[解決済み] 入力ファイルが指定されていない
-
[解決済み】Netbeans 7.4 for PHPで「スーパーグローバルな$_POST配列に直接アクセスしないでください」という警告が発生する。
-
[解決済み】警告: file_get_contents(): https:// ラッパーがサーバー構成ですべて無効になっています。
-
[解決済み] $_SERVER['DOCUMENT_ROOT'] と $_SERVER['HTTP_HOST'] の違いについて