JSON多次元オブジェクトを配列へ変換する方法

このQ&Aのポイント
  • JSON多次元オブジェクトを配列へ変換する方法について教えてください。json_decodeを試しましたが上手くいきませんでした。特にdata以下の配列を取得したいです。
  • JSON多次元オブジェクトを配列へ変換する方法がわかりません。json_decodeを使った試みはありますが、うまくいきませんでした。特にdata以下の配列だけを取得したいです。
  • JSON多次元オブジェクトを配列へ変換する方法を教えてください。json_decodeを試しましたが、うまくいきませんでした。特にdata以下の配列を取得したいです。
回答を見る
  • ベストアンサー

JSON多次元オブジェクト(?)を配列へ変換したい

・下記のようなJSON多次元オブジェクト(?)を配列へ変換したいのですが、どうすれば良いでしょうか? ・json_decode試したけどうまくいきませんでした ・出来れば、data以下だけを配列で取得したいです array(1) { [0]=> string(1284) {"version":1,"req_id":null,"error":null,"data":[ {"name":"Sad","j_title":"A","id":"23","thumb":"hoge1","date":"2009","title":"Ch","url":"hoge2"}, {"name":"Wil","j_title":"r","id":"30","thumb":"hoge3","date":"2013","title":"Po","url":"hoge8"} ]} [1]=> string(1282) {"version":1,"……

  • re97
  • お礼率80% (601/744)
  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
noname#244856
noname#244856
回答No.1

$assoc = json_decode(json_encode($object), true); でどうぞ。こうすると全部連想配列になります。 (個人的にはオブジェクトのままの方が扱いやすいと思いますが…)

re97
質問者

お礼

回答ありがとうございました。 大変参考になりましたー

関連するQ&A

  • 2次元のJSON形式の配列の展開

    JSON形式で受け取った2次元配列をHTMLに書き出そうとしています。 配列を指定するカラム名?を変数にしたいのですがうまくできません。 var hoge = "abc"; var len = result.length; for (i = 0; i < len; i++){  objResult.append("<li><a href=" + result[i].ID + ">" + result[i].hoge + "</a></li>"); } ※objResultはul要素を変数に収めたものです。 JSONデータは1列目のカラム名は『ID』で固定ですが2列目は変動する為、上記の『hoge』の部分にはJSONデータを受け取る前にカラム名を別処理で取得して格納しています。 ご教授の程よろしくお願いします。

  • 3次元配列を2次元配列にする方法はありますか?

    3次元配列を2次元配列にする方法はありますか? すいません、初心者です。 オープンソースとyahooとgoogleのAPIを使って統合型メタ検索エンジンを作っています。 yahooの結果の配列は2次元配列で出せました。 $search_results[$i]["url"] google APIは1回のリクエストで8件までしか呼び出せないみたいなので、 curl_multi関数を使って複数のリクエストを同時に取得しています。 そうしたら結果の配列は三次元配列になりました。 $search_results[$id][$i]["url"] 以下googleの関数です。curl_multiの部分等、文字数の関係で省略しています。 省略した部分のソースは下記リンクにのっています。 http://phpspot.org/blog/archives/2008/02/phpapi.html function search_google($query) { $curls = array(); $search_results = array(); $i=0; $site_results = array( 'http://ajax.googleapis.com/&start=0', 'http://ajax.googleapis.com/&start=8', 'http://ajax.googleapis.com/&start=16', 'http://ajax.googleapis.com/&start=24', 'http://ajax.googleapis.com/&start=32', 'http://ajax.googleapis.com/&start=40', 'http://ajax.googleapis.com/&start=48', 'http://ajax.googleapis.com/&start=56'); foreach($curls as $id=>$c) { $searchs[$id] = curl_multi_getcontent($c);//$cが$site_resultsのリクエスト結果 curl_multi_remove_handle($mh, $c); $json=json_decode($searchs[$id]); if($json->responseStatus != 200){exit();} $responseData = $json->responseData; $results = $responseData->results; for($i=0;$i<count($results);$i++){ $title = $current_result->title; $search_results[$id][$i]["title"]= $title; } } curl_multi_close($mh); return $search_results; } 統合型メタ検索にしたいと考えているのでgoogle配列の変数[$id]同士を結合して yahooの結果と同じく $search_results[$i]["url"] のような二次元配列にしたいのですが、そのようなことは可能ですか? 本当は両方とも3次元配列にするという処理が適切だと思いますが、初心者がオープンソースを改良して使用しているので、どこを直せば3次元配列のものをうまく表示できるのかわからないのです。 わかりにくかったらすいません。どうか、よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPのヒアドキュメントの中で多次元配列

    PHP4を用いているのですが、ヒアドキュメントの中で多次元配列が思うとおりに展開されずに困っています。 echo <<<EOM <tr> <td>$req_list_array[$j]['Req_local']</td> <td>$req_list_array[$j]['Req_point']</td> <td>$req_list_array[$j]['User_name']</td> <td>$req_list_array[$j]['Req_time']</td> </tr> EOM; 上記のように打っても、 Array['Req_local'] Array['Req_point'] Array['User_name'] Array['Req_time'] と表示されてしまいます。 うまい解決方法をご存知の方よろしくお願いします。 ${req_list_array[$j]['Req_local']} こんな風にしてみたら、エラーが発生してしまいました。

    • ベストアンサー
    • PHP
  • 多次元配列の処理について

    多次元配列を扱った処理を行ないたいのですが、一部でnullを受け取ってしまい、処理を行うことができません。 引数の配列には次のようなテキストが入っています。 --配列の内容-- 0,名詞-一般,1,5, 0,名詞-数,2,6, 0,名詞-接尾-助数詞,3,7, -------------- この配列をコマンドラインに書き出すと正確に表示されます。 しかし、配列の内容を参照して処理を行なうと2列目の処理のときにnullを参照してしまいます。 プログラムは以下のとおりです。 ---プログラム--- public class Dist {   public static int zairyo(String[][] date) {    int a = 0;    int b = 0;    int c = 0;    int d = 0;    int e = 0;    if(date != null) {     int f = 0;     System.out.println("//Dist//");     for(int m = 0; m < date.length; m++) {      for(int n = 0; n < date[0].length; n++) {       if(date[m][n] != null) {        System.out.print(date[m][n] + "\t");        f++;        if(f == date[0].length) {         System.out.println("");         f = 0;        }       }      }     }     for(int i = 0; i < date.length; i++) {      if(date[i][1] != null) {       if(date[i][1] == "名詞-一般")        a++;       if(date[i][1] == "名詞-数")        b++;       if(date[i][1] == "名詞-接尾-助数詞")        c++;      }else System.out.println("2列目null");     }     int j = date.length - 1;     d = Integer.parseInt(date[j][2]);     e = Integer.parseInt(date[j][3]);    }else System.out.println("Dist:null");    if(a > 0 && b > 0 && c > 0 && d <= 10 && e <= 15) {     return 1;    }else return 0;   } } ------------------------ 原因は何なのでしょうか? ご教授お願いします。

  • 配列の中の値の型変換

    Array => [0] => Array  ['id'] => '10'  ['size'] => Array   ['height'] => '25.1'   ['width'] => '10.6'   ['length'] => '15.7'  ['name'] => 'shose'  ['comment'] => '' [1] => Array  ['id'] => '10'  ['size'] => Array   ['height'] => '25.1'   ['width'] => '10.6'   ['length'] => null  ['name'] => 'paper'  ['comment'] => 'color is red'   上記のように配列の中の要素の値が全てstring型で、値がない要素だけnullという配列があります。 この配列の全ての文字列を、  整数に変換可能ならint型に変換  浮動小数点型に変換可能ならfloat型に変換  数値に変換不可能ならstring型のまま  nullの場合はnullのまま にキャストしたいのですがどのようなコードになるのでしょうか? ネストの深さは一定ではありません。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • php オブジェクトデータ内の配列にアクセスしたい

    失礼します。 phpでのオブジェクトデータ内の配列にアクセスしたいのですが、うまくいきません。 下記(phpunit)のtitle配列内データにアクセスする際にどういった表記をすれば良いのでしょうか? ご教授宜しくお願い致します。 object(PHPUnit_Extensions_Database_DataSet_DefaultTable)#334 (2) { ["tableMetaData":protected] => object(PHPUnit_Extensions_Database_DataSet_DefaultTableMetaData)#331 (2) { ["columns":protected] => array(2) { [0]=> string(2) "id" [1]=> string(5) "title" } ["primaryKeys":protected] => array(0) { } ["tableName":protected] => string(14) "hogehoge" } ["data":protected] => array(1) { [0]=> array(3) { ["id"]=> string(2) "1" ["title"]=> string(13) "test_titleです。" } } ["other":"PHPUnit_Extensions_Database_DataSet_AbstractTable":private] => NULL }

    • ベストアンサー
    • PHP
  • 連想配列、オブジェクト配列の使い分け

    お世話になります。 データベースで結果を取得する場合など、連想配列のままではなく何故、わざわざオブジェクトに格納する様な手法が使われるのでしょうか? 連想配列のままで処理するほうが早いと思いますし、それに付随するクラスファイルも多くなります。また、「結びつきを緩くして仕様変更に耐えうる様に」など聞きますが、余計複雑になってしまう様な気がしますので、メリットが今ひとつ分からず判断に迷ってしまいます。 どの様な使い分け、考え方をすれば良いかアドバイスいただけたら幸いです。 何卒、宜しくお願いします。 例) ※必要と思われる部分のみ記述しております。 ■連想配列 while($row=mysql_fetch_assoc($res)){ ~以下必要な処理} ■オブジェクト配列 while($row=mysql_fetch_assoc($res)){ $example = new Example(); $example->setName($row['name']); $example->setAddr($row['addr']); $array[] = $example } ~以下必要な処理 ○モデル class Example { private $_name = null; private $_addr = null; public function __construct() {} public function setName($name) { $this->_name = (string) $name; return $this; } public function getName() { return $this->_name; } public function setAddr($addr) { $this->_addr = (string) $addr; } ~以下省略 }

    • ベストアンサー
    • PHP
  • jspでの二次元配列

    こんにちは。初めて質問させていただきます。よろしくお願いします。 現在javaで作ったプログラムをjspでも使えるようにしようと考えているのですが、 二次元配列がうまくjspで反映されず困っています。 jspに関してはほとんど無知で一から勉強している次第です。 そのためなるべく簡単に、と思い 以下のプログラムを、<% %>の間に入れるだけで動かせないかと思ったのですが エラーが出てしまいました。一次元の配列ならばできたのですが... ちなみに以下のプログラムはcsvファイルを読み込み、 多次元配列に格納していくというものです。 稚拙なプログラムで申し訳ありません... どなたかご教授いただければ幸いです。 import java.io.*; import java.util.StringTokenizer; import java.util.ArrayList; class Dog{  public static void main(String args[]) throws IOException{      String csv = "dognum.csv";      BufferedReader br = new BufferedReader(new FileReader(csv)); String[][] array = new String[100][]; int i = 0; while (true) { String line = br.readLine(); if(line==null) break; array[i] = line.split(","); i++; } for (i = 0; i < 101; i++) { for (int j = 0; j < array[i].length; j++) { System.out.println("["+i+"]["+j+"] = " + array[i][j]); } } } }

  • Smartyへの2次元配列引渡しについて

    PHP+Smartyで現在開発をしておりますが MySQLからデータを取得し、それをSmartyに引き渡すと中身がNULLになってしまう現象が発生しています。 これがすべてにおいて発生しているのであれば納得いくのですが ある環境では発生して、またある環境では問題なく処理できるのです。 対処法を探してみましたが、どうしても対処できないので ご教授いただけたらと思います。 サーバから抽出した内容をPHP側でvar_dumpしたものです。 array(3) { [0]=> array(1) { ["ITEM_ID"]=> string(1) "1" } [1]=> array(1) { ["ITEM_ID"]=> string(1) "2" } [2]=> array(1) { ["ITEM_ID"]=> string(1) "3" } } これを $smarty -> assign("LIST", $ROW); でsmartyに出力しました。 Smarty側では以下の内容を実行しました。 {{$LIST|@var_dump}} 結果 array(3) { [0]=> NULL [1]=> NULL [2]=> NULL } でした。 問題ない環境だと array(3) { [0]=> array(1) { ["ITEM_ID"]=> string(1) "1" } [1]=> array(1) { ["ITEM_ID"]=> string(1) "2" } [2]=> array(1) { ["ITEM_ID"]=> string(1) "3" } } ときちんと値を引き継いでいます。 下記は上記の内容を実行した環境です。 動作しなかった環境 ローカル(XAMPP使用) PHP Version 5.2.9 Apache/2.2.11 (Win32) DAV/2 mod_ssl/2.2.11 OpenSSL/0.9.8i PHP/5.2.9 サーバ: localhost via TCP/IP サーバのバージョン: 5.1.33-community MySQL クライアントのバージョン: 5.0.51a 動作した環境 レンタルサーバー PHP Version 5.2.9 Apache/2.2.11 (Unix) mod_ssl/2.2.11 OpenSSL/0.9.8i DAV/2 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 サーバ: Localhost via UNIX socket サーバのバージョン: 5.0.75-community-log MySQL クライアントのバージョン: 5.0.75 サーバー環境によって処理される内容もかわってくるのでしょうか・・・。

    • ベストアンサー
    • PHP
  • JAVAのjsonの扱いについて

    お世話になります。 JAVAのjsonの扱いについてPHPのjson_decode()のように処理をしたいと 思っていますがうまくいかず、どなたかご教授おねがいします。 下記jsonデータの値を取得したいです。 PHPのjson_decode()のように簡単にデータにアクセスする方法はないのでしょうか? {"class":{"count":2},  "class_info":[{"name":"クラスA",          "teacher":{"name":"sam", "age":35},          "member":["AA","BB"]},          {"name":"クラスB",          "teacher":{"name":"risa", "age":30},          "member":["CC","DD"]}]} [Test.java] 下記ではMapを使用していますが簡単にアクセスできる方法を探しています。 ========================================= import net.arnx.jsonic.JSON; import java.util.Map; public class Test { public static void main(String[] args) { Map map = (Map)JSON.decode("{'class':{'count':2},'class_info':[{'name':'Aclass','teacher':{'name':'sam', 'age':35},'member':['AA','BB']},{'name':'Bclass','teacher':{'name':'risa', 'age':30},'member':['CC','DD']}]}"); /* class の情報 */ // phpの連想配列でいうとmap['class'] 表示 System.out.println(map.get("class")); // phpの連想配列でいうとmap['class']['count']表示させたい /* class_info の情報*/ // phpの連想配列でいうとmap['class_info'][0]を表示させたい // phpの連想配列でいうとmap['class_info'][0]['name']を表示させたい // phpの連想配列でいうとmap['class_info'][0]['teacher']を表示させたい // phpの連想配列でいうとmap['class_info'][0]['teacher']['age']を表示させたい // phpの連想配列でいうとmap['class_info'][0]['member'][1]を表示させたい } } =========================================

    • ベストアンサー
    • Java

専門家に質問してみよう