我有一个类似于这个的JSON:
{"request":
{"Target":"Affiliate_Offer","Format":"json","Service":"HasOffers","Version":"2","NetworkId":"adattract","Method":"getPayoutDetails","api_key":"bd2e82f029c50b582db85868b7c0b8ab99d095886ab079f87b464bb68486c891","offer_id":"9463"},"response":
{"status":1,"httpStatus":200,"data":{"offer_payout":
{"payout":"0.820"}},"errors":[],"errorMessage":null}}
我想只选择payout
0.820
的值。
这是我尝试的内容
<?php
include 'db.php';
$result = mysql_query("SELECT * FROM ada WHERE require_approval='0' ORDER BY i2 ASC LIMIT 0,10") or die(mysql_error());
// keeps getting the next row until there are no more to get
while ($row = mysql_fetch_array($result)) {
echo "<div>";
$r = $row['id'];
$ri = $row['i2'];
// $ri contains no. 1 2 3 4 5..//
$json = '';
}
$mydata = json_decode($json, true);
$data = $mydata["response"]["data"];
$pay = $data[$ri]["offer_payout"][payout];
echo "</div>";
mysql_query("INSERT INTO thumb(img,id) VALUES('$nth','$oid')");
echo $pay; //output of 0.8200 but not work plz here i need help//
}
?>
答案 0 :(得分:3)
妄想'给一个人一条鱼,他将养活他的家人一天。教一个人钓鱼,他将永远养活他的家人'这里是你如何找出一个json对象的样子。
$json = '{"request":
{"Target":"Affiliate_Offer","Format":"json","Service":"HasOffers","Version":"2","NetworkId":"adattract","Method":"getPayoutDetails","api_key":"bd2e82f029c50b582db85868b7c0b8ab99d095886ab079f87b464bb68486c891","offer_id":"9463"},"response":
{"status":1,"httpStatus":200,"data":{"offer_payout":
{"payout":"0.82000"}},"errors":[],"errorMessage":null}}';
$mydata = json_decode($json,true);
print_r($mydata);
将输出: -
Array
(
[request] => Array
(
[Target] => Affiliate_Offer
[Format] => json
[Service] => HasOffers
[Version] => 2
[NetworkId] => adattract
[Method] => getPayoutDetails
[api_key] => bd2e82f029c50b582db85868b7c0b8ab99d095886ab079f87b464bb68486c891
[offer_id] => 9463
)
[response] => Array
(
[status] => 1
[httpStatus] => 200
[data] => Array
(
[offer_payout] => Array
(
[payout] => 0.82000
)
)
[errors] => Array
(
)
[errorMessage] =>
)
)
现在您知道如何处理任何和所有字段
所以你想要的字段是
$pay = $mydata["response"]["data"]["offer_payout"]["payout"];
现在您决定将JSON Object
转换为array
,没有必要这样做,并且在某些方面,对象更容易解决并且使用的键击次数少于数组。
所以请将,true
退出json_decode
,然后你就可以了。
$json = '{"request":
{"Target":"Affiliate_Offer","Format":"json","Service":"HasOffers","Version":"2","NetworkId":"adattract","Method":"getPayoutDetails","api_key":"bd2e82f029c50b582db85868b7c0b8ab99d095886ab079f87b464bb68486c891","offer_id":"9463"},"response":
{"status":1,"httpStatus":200,"data":{"offer_payout":
{"payout":"0.82000"}},"errors":[],"errorMessage":null}}';
$mydata = json_decode($json);
print_r($mydata);
哪些输出: -
stdClass Object
(
[request] => stdClass Object
(
[Target] => Affiliate_Offer
[Format] => json
[Service] => HasOffers
[Version] => 2
[NetworkId] => adattract
[Method] => getPayoutDetails
[api_key] => bd2e82f029c50b582db85868b7c0b8ab99d095886ab079f87b464bb68486c891
[offer_id] => 9463
)
[response] => stdClass Object
(
[status] => 1
[httpStatus] => 200
[data] => stdClass Object
(
[offer_payout] => stdClass Object
(
[payout] => 0.82000
)
)
[errors] => Array
(
)
[errorMessage] =>
)
)
现在您想要解决的字段是: -
$pay = $mydata->response->data->offer_payout->payout;
答案 1 :(得分:1)
您可以从json获取值:
// your json
$json = '{"request":
{"Target":"Affiliate_Offer","Format":"json","Service":"HasOffers","Version":"2","NetworkId":"adattract","Method":"getPayoutDetails","api_key":"bd2e82f029c50b582db85868b7c0b8ab99d095886ab079f87b464bb68486c891","offer_id":"9463"},"response":
{"status":1,"httpStatus":200,"data":{"offer_payout":
{"payout":"0.82000"}},"errors":[],"errorMessage":null}}';
// json_decode() function with second param true for array format
$json_decoded = json_decode($json,true);
echo $json_decoded['response']['data']['offer_payout']['payout']; //0.82000
如何在代码中获得此功能?
您只需在代码中更改这两行:
$data = $mydata["response"]["data"];
$pay = $data["offer_payout"]['payout']; //0.82000
答案 2 :(得分:0)
$pay = $mydata["response"]["data"]["offer_payout"]["payout"];
您可能希望将其强制转换为float,因为它是您提供的JSON数据中的字符串:
$pay = (float) $mydata["response"]["data"]["offer_payout"]["payout"];
答案 3 :(得分:0)
首先,您需要将json转换为数组
$array =json_decode($json,TRUE); //$json is converted to array
现在您可以从数组中检索任何属性 完整的代码示例是
$json = '{"request":
{"Target":"Affiliate_Offer","Format":"json","Service":"HasOffers","Version":"2","NetworkId":"adattract","Method":"getPayoutDetails","api_key":"bd2e82f029c50b582db85868b7c0b8ab99d095886ab079f87b464bb68486c891","offer_id":"9463"},"response":
{"status":1,"httpStatus":200,"data":{"offer_payout":
{"payout":"0.82000"}},"errors":[],"errorMessage":null}}';
$mydata = json_decode($json,true);
print_r($mydata);
输出:
Array ( [request] => Array ( [Target] => Affiliate_Offer [Format] => json [Service] => HasOffers [Version] => 2 [NetworkId] => adattract [Method] => getPayoutDetails [api_key] => bd2e82f029c50b582db85868b7c0b8ab99d095886ab079f87b464bb68486c891 [offer_id] => 9463 ) [response] => Array ( [status] => 1 [httpStatus] => 200 [data] => Array ( [offer_payout] => Array ( [payout] => 0.82000 ) ) [errors] => Array ( ) [errorMessage] => ) ) 1
从结果中您可以检索任何数组属性
例如 -
echo $mydata['response']['status'];
输出: 1
答案 4 :(得分:0)
希望这会对你有所帮助。
$mydata = json_decode($json, true);
$data = $mydata['response']['data'];
print_r($data);
print_r($data['offer_payout']['payout']);