2017-05-08 9 views
0

저는 Symfony 3, FosRestBundle 및 JsmSerializerBundle을 사용하고 있습니다.SF3 - JmsSerializer로 엔티티 이름 추가

내 json 응답에 엔티티 이름을 추가하고 싶습니다.

Exemple :

'사용자가'기업 사용자를하고 엔티티 포스트를 게시
{ 
    'user': 
    { 
     'id': 0 
     'firstName': 'John', 
     'lastName': 'Doe', 
     'posts': [ 
     { 
      'id': 0, 
      'name': 'post name #1' 
     }, 
     { 
      'id': 1, 
      'name': 'post name #2' 
     }, 
     ] 
    } 
} 

.

json을 구축하는 가장 좋은 방법은 무엇입니까?

답변

0

먼저 json이 유효하지 않습니다. 'posts'는 대신 객체 {} 일 수 있으며 중복 키 'post'는 사용할 수 없습니다.

각 엔터티의 유형을 얻으려면 각 엔터티에 속성을 추가 할 수 있습니다.

{ 
    "id": 0, 
    "entityType": "user", 
    "firstName": "John", 
    "lastName": "Doe", 
    "posts": [ 
    { 
     "id": 0, 
     "entityType": "post", 
     "name": "post name #1" 
    }, 
    { 
     "id": 1, 
     "entityType": "post", 
     "name": "post name #2" 
    } 
    ] 
} 

EDIT1 : 엔티티를 래핑하는 응답 객체를 생성

class GetUserResponse 
{ 
    /** 
    * @var User 
    * @Serializer\Expose() 
    * @Serializer\SerializedName(name="user") 
    */ 
    protected $user; 
} 

{ 
    'user': 
    //.... 
} 
+0

내가 가진 반환해야처럼

/** * @var string * @Serializer\Expose() */ private $entityType = 'user'; 

... 당신의 JSON 보인다 게시물/게시물을 수정하기 위해 내 json을 편집했습니다. entityType은 해결책이 될 수 있습니다. 엔티티 데이터 외부에있는 entityType을 갖는 것이 더 바람직합니다. 그게 가능하니? 노멀 라이저와 어쩌면? – Sancho

+0

다른 사람 (게시물)이 속성을 기반으로 이름을 얻으므로이 수정을 통해 사용자 유형 만 필요합니다.이 경우 소비자에게 보내기 전에 간단하게 반환 할 수 있습니다. 위 응답에서 @ edit1을 참조하십시오. – rafrsr