json输出转换为php字符串

时间:2015-07-18 15:46:28

标签: php json mashup

以下是我的工作API,但UIView的结果仅为"echo $data""array"的结果为空白。因此,如何将"echo $data["data"]["operatorid"]"转换为json reponse字符串,并从同一

中获取特定值
php

json回复:

$opts = array(
'http'=>array(
'method'=>"GET",
'header'=>"X-Mashape-Key: XXXXXXXX"               
)
);

$context = stream_context_create($opts);
$res = file_get_contents('https://tariff-plan-api-datayuge.p.mashape.com/index.php?circleid=kerala&limit=50&operatorid=BSNL&recharge_type=top', false, $context);
$data = (json_decode($res, true));
echo $data["data"]["operatorid"];

2 个答案:

答案 0 :(得分:1)

该JSON字符串转换为具有名为print_r()的属性的PHP对象,该属性是对象数组

stdClass Object ( [data] => Array ( [0] => stdClass Object ( [id] => 3148 [operatorid] => BSNL [circleid] => Kerala [recharge_amount] => 150 [recharge_talktime] => 150 [recharge_validity] => Unlimited [recharge_shortdesc] => Recharge Of Rs 150 By BSNL [recharge_longdesc] => Full Talktime (offer valid upto 23 Mar 2015) [recharge_type] => Full Talktime ) [1] => stdClass Object ( [id] => 3149 [operatorid] => BSNL [circleid] => Kerala [recharge_amount] => 250 [recharge_talktime] => 250 [recharge_validity] => Unlimited [recharge_shortdesc] => Recharge Of Rs 250 By BSNL [recharge_longdesc] => Full Talktime (offer valid upto 23 Mar 2015) [recharge_type] => Full Talktime ) [2] => stdClass Object ( [id] => 3150 [operatorid] => BSNL [circleid] => Kerala [recharge_amount] => 550 [recharge_talktime] => 550 [recharge_validity] => Unlimited [recharge_shortdesc] => Recharge Of Rs 550 By BSNL [recharge_longdesc] => Full Talktime (offer valid upto 23 Mar 2015) [recharge_type] => Full Talktime ) [3] => stdClass Object ( [id] => 3151 [operatorid] => BSNL [circleid] => Kerala [recharge_amount] => 1000 [recharge_talktime] => 1100 [recharge_validity] => Unlimited [recharge_shortdesc] => Recharge Of Rs 1000 By BSNL [recharge_longdesc] => Extra Talktime (offer is valid till 23 Mar 2015) [recharge_type] => Full Talktime ) [4] => stdClass Object ( [id] => 3152 [operatorid] => BSNL [circleid] => Kerala [recharge_amount] => 1100 [recharge_talktime] => 1210 [recharge_validity] => Unlimited [recharge_shortdesc] => Recharge Of Rs 1100 By BSNL [recharge_longdesc] => Extra Talktime (offer is valid till 23 Mar 2015) [recharge_type] => Full Talktime ) [5] => stdClass Object ( [id] => 3153 [operatorid] => BSNL [circleid] => Kerala [recharge_amount] => 1500 [recharge_talktime] => 1650 [recharge_validity] => Unlimited [recharge_shortdesc] => Recharge Of Rs 1500 By BSNL [recharge_longdesc] => Extra Talktime (offer is valid till 23 Mar 2015) [recharge_type] => Full Talktime ) [6] => stdClass Object ( [id] => 3154 [operatorid] => BSNL [circleid] => Kerala [recharge_amount] => 2000 [recharge_talktime] => 2200 [recharge_validity] => Unlimited [recharge_shortdesc] => Recharge Of Rs 2000 By BSNL [recharge_longdesc] => Extra Talktime (offer is valid till 23 Mar 2015) [recharge_type] => Full Talktime ) ) )

的输出
$context = stream_context_create($opts);
$res = file_get_contents('https://tariff-plan-api-datayuge.p.mashape.com/index.php?circleid=kerala&limit=50&operatorid=BSNL&recharge_type=top', false, $context);

$data = (json_decode($res));
echo $data->data[0]->operatorid;

因此,要引用单个项目,您需要使用此语法

$data

如果您使用$jsonObj = (json_decode($res)); echo $jsonObj -> data[0] -> operatorid; 以外的变量名称

,可能会更容易理解
$jsonObj = (json_decode($res));
foreach ($jsonObj -> data as $data) {
    echo $data -> operatorid;
}

或者,如果您正在处理所有出现

{{1}}

答案 1 :(得分:0)

self拥有一个多维数组 - "数据"它本身拥有多个数组。

$data不会返回任何内容,因为您没有指定要从中打印echo $data["data"]["operatorid"]中的哪些数组。

使用以下

指定要定位的阵列

operatorid

或循环遍历你的$ data数组

$data["data"][*index*]["operatorid"]