-4

データをjson形式で返すURLを呼び出します。この出力からいくつかの変数を選ぶのが好きです。出力は次のとおりです。

{
  "graph_property" : [ {
    "name" : "calculation_method",
    "value" : "Geo Mean"
  }, {
    "name" : "graph_type",
    "value" : "TIME"
  } ],
  "measurement" : [ {
    "id" : "1132282",
    "alias" : "example.com"
    "bucket_data" : [ {
      "name" : "2013-JUN-20 11:23 AM",
      "id" : 1,
      "perf_data" : {
        "value" : "4.878",
        "unit" : "seconds"
      },
      "avail_data" : {
        "value" : "100.00",
        "unit" : "percent"
      },
      "data_count" : {
        "value" : "1",
        "unit" : "#"
      }
    }, {
      "name" : "2013-JUN-20 11:28 AM",
      "id" : 2,
      "perf_data" : {
        "value" : "-",
        "unit" : "seconds"
      },
      "avail_data" : {
        "value" : "-",
        "unit" : "percent"
      },
      "data_count" : {
        "value" : "-",
        "unit" : "#"
      }
    }, {
      "name" : "2013-JUN-20 11:33 AM",
      "id" : 3,
      "perf_data" : {
        "value" : "-",
        "unit" : "seconds"
      },
      "avail_data" : {
        "value" : "-",
        "unit" : "percent"
      },
      "data_count" : {
        "value" : "-",
        "unit" : "#"
      }
    } ],
    "graph_option" : [ {
      "name" : "perfwarning",
      "value" : "-",
      "unit" : "seconds"
    }, {
      "name" : "perfcritical",
      "value" : "-",
      "unit" : "seconds"
    }, {
      "name" : "availwarning",
      "value" : "-",
      "unit" : "percent"
    }, {
      "name" : "availcritical",
      "value" : "-",
      "unit" : "percent"
    }, {
      "name" : "bucketsize",
      "value" : "300",
      "unit" : "seconds"
    }, {
      "name" : "rows",
      "value" : "3",
      "unit" : "#"
    }, {
      "name" : "pagecomponent",
      "value" : "User Time",
      "unit" : "seconds"
    }, {
      "name" : "avg_perf",
      "value" : "4.878",
      "unit" : "seconds"
    }, {
      "name" : "avg_avail",
      "value" : "100.00",
      "unit" : "percent"
    }, {
      "name" : "total_datapoint_count",
      "value" : "1",
      "unit" : "#"
    }, {
    } ]
  } ],
  "link" : {
    "type" : "application/json",
    "href" : "http://api.keynote.com/",
    "rel" : "slotmetadata"
  }
}

私が興味を持っている値は次のとおりです。

 "

name" : "2013-JUN-20 11:23 AM",
     "value" : "4.878",

     "name" : "2013-JUN-20 11:28 AM",
     "value" : "-",

    "name" : "2013-JUN-20 11:33 AM",
     "value" : "-",

このようにしている理由は、Web サービス呼び出しが空の値を返すことがあるからです。この出力から、空の値を持たない最新の日付を選択し、空ではない名前と値を出力するのが好きです。

この json 出力から名前と値のフィールドを選択する簡単な方法はありますか?

私がする時

$data<-json_decode($resp)
print_r($data)

データの一部は次のとおりです。

[measurement] => Array
    (
        [0] => Array
            (
                [id] => 1132282
                [alias] =>example.com
                [bucket_data] => Array
                    (
                        [0] => Array
                            (
                                [name] => 2013-JUN-20 01:23 PM
                                [id] => 1
                                [perf_data] => Array
                                    (
                                        [value] => 3.074
                                        [unit] => seconds
                                    )

                                [avail_data] => Array
                                    (
                                        [value] => 100.00
                                        [unit] => percent
                                    )

                                [data_count] => Array
                                    (
                                        [value] => 1
                                        [unit] => #
                                    )

                            )

                        [1] => Array
                            (
                                [name] => 2013-JUN-20 01:28 PM
                                [id] => 2
                                [perf_data] => Array
                                    (
                                        [value] => 3.416
                                        [unit] => seconds
                                    )

                                [avail_data] => Array
                                    (
                                        [value] => 100.00
                                        [unit] => percent
                                    )

                                [data_count] => Array
                                    (
                                        [value] => 1
                                        [unit] => #
                                    )

                            )

                        [2] => Array
                            (
                                [name] => 2013-JUN-20 01:33 PM
                                [id] => 3
                                [perf_data] => Array
                                    (
                                        [value] => -
                                        [unit] => seconds
                                    )

                                [avail_data] => Array
                                    (
                                        [value] => -
                                        [unit] => percent
                                    )

                                [data_count] => Array
                                    (
                                        [value] => -
                                        [unit] => #
                                    )

                            )

                    )
4

1 に答える 1

1

組み込みのjson_decode関数を使用する

$data = json_decode('your_json_here'); //$data will be "stdClass" object
$data = json_decode('your_json_here', true); //$data will be "array" object

その後、通常の配列/オブジェクトと同様に $data を操作できます

タイプ = stdClass の場合:

$data->measurement[0]->bucket_data[0]->name; // will be equal "2013-JUN-20 11:23 AM"

タイプ = 配列の場合

$data['measurement'][0]['bucket_data'][0]['name']; // will be equal "2013-JUN-20 11:23 AM"
于 2013-06-20T15:49:45.917 に答える