2016-03-31 16 views
0

私は春に新しく、APIからjsonレスポンスを受け取ったときに奇妙な動作をしています。プロパティ名は取得できません。どのようにして、propertyNameが応答で返されるのを防ぐことができますか?春休みApi Jsonレスポンスでプロパティ名が表示されない

電流応答:

[ 
    [ 
    "6ED569AAE51C401CB621E96856766BF4", 
    "{\"EventType\":\"Test\",\"lastName\":\"Smith\",\"age\":25,\"address\":{\"streetAddress\":\"212ndStreet\",\"city\":\"NewYork\",\"state\":\"NY\",\"postalCode\":\"10021\"}}", 
    "{\"EventType\":\"Test\",\"lastName\":\"Smith\",\"age\":25,\"address\":{\"streetAddress\":\"212ndStreet\",\"city\":\"NewYork\",\"state\":\"NY\",\"postalCode\":\"10021\"}}", 
    "JPA_USER", 
    1459372275949, 
    "JPA_USER", 
    1459372275949, 
    "A", 
    "UPJPATESTEVENT", 
    "8210D1C62E014F158859EC0D034435BC" 
    ] 
] 

正しい応答のようなプロパティ名となりますが:

[ 
    [ 
    "refEventTypeId":"6ED569AAE51C401CB621E96856766BF4", 
    "jsonExampleDocument":"{\"EventType\":\"Test\",\"lastName\":\"Smith\",\"age\":25,\"address\":{\"streetAddress\":\"212ndStreet\",\"city\":\"NewYork\",\"state\":\"NY\",\"postalCode\":\"10021\"}}", 
    "jsonAvroSchema":"{\"EventType\":\"Test\",\"lastName\":\"Smith\",\"age\":25,\"address\":{\"streetAddress\":\"212ndStreet\",\"city\":\"NewYork\",\"state\":\"NY\",\"postalCode\":\"10021\"}}", 
    "createUser":"JPA_USER", 
    "createDate":1459372275949, 
    "updateUser":"JPA_USER", 
    "updateDate":1459372275949, 
    "status":"A", 
    "eventType":"UPJPATESTEVENT", 
    "tenantId":"8210D1C62E014F158859EC0D034435BC" 
    ] 
] 

コントローラ:私はまた、コントローラが、私にResponseEntityを使用してみました

@ResponseBody 
@RequestMapping(value = "/abc", method = RequestMethod.GET, produces = "application/json") 
public List<EventORM> getAllEvents2(@RequestParam(value = "status", required = false) String status) throws SQLException {       

    List<EventORM> event = eventManager.getAllEvents(status); 

    return event; 
} 

それでも同じ結果が得られます:

@ResponseBody 
    @RequestMapping(value = "", method = RequestMethod.GET, produces = "application/json") 
    public ResponseEntity<List<EventORM>> getAllEvents(@RequestParam(value = "status", required = false) String status) throws SQLException {       

     List<EventORM> event = eventManager.getAllEvents(status); 

     return new ResponseEntity<List<EventORM>>(event, HttpStatus.OK); 
    } 

DAOImpl:

public List<EventORM> getAllEvents(String status) { 

    StringBuilder sql = new StringBuilder(); 
    sql.append("SELECT refEventTypeId, jsonExampleDocument, jsonAvroSchema, createUser, createDate, updateUser, updateDate, status, eventType, tenantId FROM EventORM event"); 

    Query queryEvents = entityManager.createQuery(sql.toString());   

    return queryEvents.getResultList(); 
} 

モデル:

package com.epsilon.al.ml.dao.orm.model; 

import java.io.Serializable; 

import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.Id; 
import javax.persistence.Table; 

import com.epsilon.al.ml.commons.AuditModelORM; 
import com.fasterxml.jackson.annotation.JsonInclude; 
import com.fasterxml.jackson.annotation.JsonProperty; 

@Entity 
@Table(name = "T_REF_EVENT_TYPE", schema = "MI_DEV_USER") 
public class EventORM extends AuditModelORM implements Serializable { 

    /** 
    * 
    */ 
    private static final long serialVersionUID = 471512149777116797L; 

    @Column(name = "REF_EVENT_TYPE_ID") 
    @Id 
    private String refEventTypeId; 

    @Column(name = "JSON_EXAMPLE_DOCUMENT") 
    private String jsonExampleDocument; 

    @Column(name = "JSON_AVRO_SCHEMA") 
    private String jsonAvroSchema;  

    @Column(name = "EVENT_TYPE") 
    private String eventType; 

    @Column(name = "TENANT_ID") 
    private String tenantId; 

    public String getEventType() { 
     return eventType; 
    } 

    public void setEventType(String eventType) { 
     this.eventType = eventType; 
    } 

    public String getTenantId() { 
     return tenantId; 
    } 

    public void setTenantId(String tenantId) { 
     this.tenantId = tenantId; 
    } 

    public String getRefEventTypeId() { 
     return refEventTypeId; 
    } 

    public void setRefEventTypeId(String refEventTypeId) { 
     this.refEventTypeId = refEventTypeId; 
    } 

    public String getJsonExampleDocument() { 
     return jsonExampleDocument; 
    } 

    public void setJsonExampleDocument(String jsonExampleDocument) { 
     this.jsonExampleDocument = jsonExampleDocument; 
    } 

    public String getJsonAvroSchema() { 
     return jsonAvroSchema; 
    } 

    public void setJsonAvroSchema(String jsonAvroSchema) { 
     this.jsonAvroSchema = jsonAvroSchema; 
    } 

    @Override 
    public String toString() { 
     return "EventORM [refEventTypeId=" + refEventTypeId + ", jsonExampleDocument=" + jsonExampleDocument 
       + ", jsonAvroSchema=" + jsonAvroSchema + ", createUser=" + getCreateUser() + ", createDate=" + getCreateDate() 
       + ", updateUser=" + getUpdateUser() + ", updateDate=" + getUpdateDate() + ", status=" + getStatus() + ", eventType=" 
       + eventType + ", tenantId=" + tenantId + "]"; 
    } 

} 

ありがとう!私の場合は

回答:

TypedQuery<EventORM> queryEvents = entityManager.createQuery(sql.toString(), EventORM.class); 
+0

あなたのポンポンでこの依存関係を追加してみてください: ' org.codehaus.jackson ジャクソンマッパー-ASL 1.9。10 ' そして、あなたの方法のちょうど**前**リターン(... @ResponseBody一覧 ...)答えるために時間を割いて –

答えて

2

あなたの問題は、結果がリストとして返されるように、あなたが今、特定のフィールドを選択しているHQLで

StringBuilder sql = new StringBuilder(); 
sql.append("SELECT refEventTypeId, jsonExampleDocument, jsonAvroSchema, createUser, createDate, updateUser, updateDate, status, eventType, tenantId FROM EventORM event"); 
Query queryEvents = entityManager.createQuery(sql.toString()); 

、以下のコードでありますこれらのフィールドに対応する値のこれは、文字列のリストの変換と同じです。

ソリューションは、

は(、以下のようにcreateQuery方法で

sql.append("SELECT event FROM EventORM event"); 
return entityManager.createQuery(sql.toString(), EventORM.class); 

それとものみ特定のセットのフィールドに

を選択したくない場合は、新たなPOJOを作成するタイプを指定することですつまり適切なDTOパッケージのEventDomDTO)を選択し、選択したフィールドにEventDomDTOを使用するようにクエリを変更します。

第二のアプローチで、あなたが今、カスタムPOJOクラスを返しているよう getAllEvents

public List<EventDomDTO> getAllEvents(String status) 

ためのメソッドシグネチャを変更する必要がありますことを

注意。

希望すると、これが役立ちます。

+0

どうもありがとうBunti @ResponseBodyを置きます。私は最初のアプローチを実装して、私の多くを助けた! – Ani

関連する問題