接收以下 JSON 时
{ "phone": [ "123", "456", "789"]}
在PHP中,我尝试得到这个(以print_r
显示):
Array ( [0] => 123 [1] => 456 [2] => 789 )
因此,我尝试使用以下代码,但没有成功:
if (isset($_GET["phone"])) {
//Decode Json
$values = json_decode($_GET['phone'], true);
print_r($values);
foreach ($values as $key => $value) {
echo "<p>$key | $value</p>";
}...
如何在请求的数组中接收和转换此 JSON?
当 JSON 在 php 代码中定义时,它工作正常。然后我得到一个关联数组。在我看来,问题可能出在java(android)代码中,因为$_GET['phone']应该在php中工作:
ArrayList<String> paramsstring = new ArrayList<String>();
ArrayList<BasicNameValuePair> paramstodb = new ArrayList<BasicNameValuePair>();
contacts = aa.toArray(new String[aa.size()]);
for (int i = 0; i < contacts.length; i++) {
paramsstring.add(contacts[i]);}
paramstodb.add(new BasicNameValuePair("phone", paramsstring.toString()));
// getting JSON string from URL
JSONObject json = jParser.makeHttpRequest(url_all_user, "GET", paramstodb);
也许 php 会收到该 JSON 的另一种格式?GET请求应该不是问题,因为JSON不是很长。
var_dump
解码的 JSON 对象会导致:
对象版本
object(stdClass)#1 (1) {
["phone"]=>
array(3) {
[0]=>
string(3) "123"
[1]=>
string(3) "456"
[2]=>
string(3) "789"
}
}
关联数组版本:
array(1) {
["phone"]=>
array(3) {
[0]=>
string(3) "123"
[1]=>
string(3) "456"
[2]=>
string(3) "789"
}
}
这正是它应该返回的内容。看这里: http://ideone.com/CDBvGQ
由于它是一个嵌套数组,因此 foreach 无法按预期工作,请尝试以下操作:
foreach ($values['phone'] as $key => $value) {
在这里看到它完全工作:http://ideone.com/QG3uH6
假设您获取 JSON 值$_GET["phone"]
if (isset($_GET["phone"])) {
//Decode Json
$array = json_decode($_GET['phone'], true);
$values=$array['phone'];
print_r($values);
foreach ($values as $key => $value) {
echo "<p>$key | $value</p>";
}
}