2012-10-21 2 views
3
$user = $this->User->find('all'); 
    $this->set('users', $user); 

У меня этот код в контроллере.Настройка вывода JSON CakePHP

На мой взгляд, у меня есть это.

echo json_encode(compact('users')); 

Он выводит JSON как этот

{ 
    "users": [{ 
     "User": { 
      "user_id": "2", 
      "email": "[email protected]", 
      "name": "Blah" 
     }] 
    } 
} 

Есть в любом случае для форматирования это, чтобы удалить весь массив, завернутый в «пользователях», а также удалить все объекты, являясь членом «Пользователь».

Это затрудняет использование на переднем конце. Я бы хотел, чтобы это выглядело так.

[{ 
    "user_id": "2", 
    "email": "[email protected]", 
    "name": "Blah" 
}] 

Спасибо за любую помощь.

ответ

7

Я не совсем понимаю, что вы подразумеваете под «удалить весь массив, завернутые в„пользователи“» и «удалить все объекты, будучи членом„Пользователь“», но в соответствии с ваш желаемый пример формата вывода, вам нужно будет извлечь и передать точные данные, которые вы хотите закодировать, до json_encode, вместо того чтобы передавать все, используя compact.

Экстрагирования может быть сделано с Set или Hash класса (в зависимости от Cake версии)

Если предположить, что модель возвращает данные в формате CakePHP по умолчанию, это, например:

json_encode(Set::extract('/User/.', $users)); 

должен дайте вам такую ​​структуру:

[{ 
    "user_id": "2", 
    "email": "[email protected]", 
    "name": "Blah" 
}] 

и с несколькими пользователями он должен выглядеть так:

[{ 
    "user_id": "1", 
    "email": "[email protected]", 
    "name": "Bar" 
}, 
{ 
    "user_id": "2", 
    "email": "[email protected]", 
    "name": "Blah" 
}] 
+0

Благодаря человек. Разработано отлично –

+0

Добро пожаловать ... – ndm

0

Использование так:

$users= (Set::extract('/User/.', $users)); 
pr($users); 

Это удалит Model из результирующего массива, а затем json_encode или что-то в дальнейшем использовании.

Более библиотечные функции Set class Here и Hash class Here

Смежные вопросы