2014-04-22 2 views
0

내가 데이터를 얻기 위해 몽고의 ODM 쿼리를 사용하지만 난 그것을 배열 형식으로 반환 쿼리 데이터를 얻을 수 있지만, 내가 JSON으로 배열에서 데이터를 변환하는 방법을 JSON 형식으로 데이터를 얻을 할 때 여기 내 코드입니다 :zf2에서 json으로 배열의 데이터를 변환하는 방법은 무엇입니까?

public function loadAction() 
    { 
     $response = $this->getResponse(); 
      $id = (int) $this->params()->fromRoute('id', 0); 
       $dm = $this->getServiceLocator()->get('doctrine.documentmanager.odm_default'); 
     $calendars = $dm->createQueryBuilder('Calendar\Document\Event') 
      ->hydrate(false) 
      ->field("calendar_id")->equals($id) 
      ->getQuery()->execute(); 
     $array = array(); 
     if($calendars && !is_null($calendars) && is_object($calendars)){      
      foreach($calendars as $key=>$value) { 
      $array[] = $value; 
      } 
     } 
      echo "<pre>"; 
      print_r($array); 
      echo "</pre>"; 
     return $response; 
      //return $this->getResponse()->setContent(Json::encode($array)); 
    } 

여기 내 반응이다 :

Array 
(
[0] => Array 
    (
     [_id] => 11 
     [calendar_id] => 44 
     [title] => fhfhfhfhfhfhfhf 
     [description] => hfhfhfhfhffh 
     [begin] => MongoDate Object 
      (
       [sec] => 1397744580 
       [usec] => 0 
      ) 

     [end] => MongoDate Object 
      (
       [sec] => 1403187780 
       [usec] => 0 
      ) 

    ) 

[1] => Array 
    (
     [_id] => 12 
     [calendar_id] => 44 
     [title] => fhfhfhfhfhfhfhfdgdg 
     [description] => hfhfhfhfhffhdgdgdg 
     [begin] => MongoDate Object 
      (
       [sec] => 1397744580 
       [usec] => 0 
      ) 

     [end] => MongoDate Object 
      (
       [sec] => 1403360580 
       [usec] => 0 
      ) 

    ) 

[2] => Array 
    (
     [_id] => 13 
     [calendar_id] => 44 
     [title] => xvxvxvxv 
     [description] => czzzvxvvzxvxvzxv 
     [begin] => MongoDate Object 
      (
       [sec] => 1398349380 
       [usec] => 0 
      ) 

     [end] => MongoDate Object 
      (
       [sec] => 1403706180 
       [usec] => 0 
      ) 

    ) 

[3] => Array 
    (
     [_id] => 14 
     [calendar_id] => 44 
     [title] => xvxvxvxggjgjfj 
     [description] => czzzvxvvzxhhdfhhd 
     [begin] => MongoDate Object 
      (
       [sec] => 1398349380 
       [usec] => 0 
      ) 

     [end] => MongoDate Object 
      (
       [sec] => 1403706180 
       [usec] => 0 
      ) 

    ) 

[4] => Array 
    (
     [_id] => 15 
     [calendar_id] => 44 
     [title] => xvxvxvxggjgjfjsadgggggggfdhdfhhdh 
     [description] => czzzvxvvzxhhdfhhddghhffffffffffffff 
     [begin] => MongoDate Object 
      (
       [sec] => 1398349380 
       [usec] => 0 
      ) 

     [end] => MongoDate Object 
      (
       [sec] => 1404138180 
       [usec] => 0 
      ) 

    ) 

) 

하지만 난이 형식으로 DAT를 원하는 :

[{ 
    "event_id":"2", 
    "calendar_id":"1", 
    "author_id":"1", 
    "title":"Launch", 
    "description":"Launch Break", 
    "begin":"2014-03-02 20:00:00", 
    "end":"2014-03-31 16:53:00", 
    "calendar_title":"Hijri Calender", 
    "author_email":"[email protected]" 
}] 

답변

1
if($calendars && !is_null($calendars) && is_object($calendars)){      
    foreach($calendars as $key => $value) { 
    $array[] = array(
     'event_id' => $value['_id'], 
     'calendar_id' => $value['calendar_id'], 
     'author_id' => $value['author_id'], // <-- author_id is defined? 
     'title' => $value['title'], 
     'description' => $value['description'], 
     'begin' => date('Y-m-d H:i:s', $value['begin']->sec), 
     'end' => date('Y-m-d H:i:s', $value['end']->sec), 
     'calendar_title' => $value['calendar_title'], // <-- calendar_title is defined? 
     'etc..' => $value['etc..'], 
    ); 
    } 

}

012 : 파일의 상단에 JsonModel을 포함하는 것을 잊지
2

당신이 사용할 수있는 PHP 기본 함수들이 그냥 로 json_encodejson_decode을 얻고을 구체적으로 형식이 (JsonModel 배열! 인코딩합니다 언급 한 바와 같이) JsonModel를 통해 그것을 반환 할 수 있습니다 그리고

+0

json 형식 –

0

에 변수를 넣어 :

return new JsonModel(array(
      'array' => $array 
     )); 

를 수행하지

use Zend\View\Model\JsonModel; 
+0

에서 사용되었지만 변환되지 않으므로 문자열을 JsonModel에 할당하기 전에 json_encode를 수행해야합니까? JsonModel이 자동으로 이것을 인코딩하지 않습니까? – mic

+0

네가 맞아, JsonModel이 그것을 enocode 것이다! 내 게시물을 수정했습니다. – nuss

+0

나는 이런 일을하는 ZF2 방식이 맘에 든다. 그러나 ZF2 JsonModel 객체의 내부 json_encode 함수에서 이스케이프 처리가 수행되는 방법을 제어하지는 않습니다. – srayner

관련 문제