Принимая следующий 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>";
}
}
$array = json_decode($_GET['phone'], true); $values=$array['phone'];