web-dev-qa-db-ja.com

PHP)を使用してJSONデータを読み取る

Solrは次のJSON形式で応答を返します。

{
  "responseHeader":{
    "status":0,
    "QTime":2,
    "params":{
      "indent":"on",
      "start":"0",
      "q":"*:*",
      "wt":"json",
      "version":"2.2",
      "rows":"10"}},
  "response":{"numFound":3,"start":0,"docs":[
      {
        "student_id":"AB1001",
        "student_name":[
          "John"]
    },
      {
        "student_id":"AB1002",
        "student_name":[
          "Joe"]
    },
      {
        "student_id":"AB1003",
        "student_name":[
          "Lorem"]
    }]

  }}

PHPを使用してstudent_id、student_nameを読み取る簡単な方法は何ですか?

9
Aadi

$obj = json_decode($yourJSONString);を使用して、オブジェクトに変換します。

次に、foreach($obj->response->docs as $doc)を使用して「ドキュメント」を繰り返し処理します。

その後、$doc->student_idおよび$doc->student_name[0]を使用してフィールドにアクセスできます。

15
ThiefMaster

PHPには、JSON文字列を配列に変換できるjson_decode関数があります。

$array = json_decode($json_string, true);
$student_id = $array['response']['docs'][0]['student_id'];
...

もちろん、インデックス0にアクセスする代わりに、学生のリストを反復処理することもできます。

10
honeyp0t
$result = json_decode($result, true);
$result['response']['docs'][0]['student_id'] ...
2
deceze
$json_a = json_decode($string, TRUE);
$json_o = json_decode($string);


#array method
foreach($json_a['response']['docs'] as $students)
{
    echo $students['student_id']." name is ".$students['student_name'][0];
    echo "<br>";
}

#Object Method`enter code here`
foreach($json_o->response->docs as $sthudent_o)
{
    echo $sthudent_o->student_id. " name is ".$sthudent_o->student_name[0];
    echo "<br>";
}
0
user3917016

SolrのPHPクライアント、またはPHP応答ライター)の1つを使用しないのはなぜですか? http://wiki.Apache.org/solr/SolPHP

0