2017-04-11 46 views
0

我有一些問題。我從列表中的JSON對象中獲得了RESTful WebServices的響應。例如:如何僅獲取JSON對象的ID列表?

我得到了這些元素的列表,我只想從benutzerId中獲得id。

[{ 
    "benutzerId": { 
     "benutzername": "Nenzema", 
     "geschlecht": "m", 
     "id": 1, 
     "nachname": "Marinovic", 
     "passwort": "test1", 
     "vorname": "Nenad" 
    }, 
    "hochzeitId": { 
     "id": 4 
    }, 
    "id": 1, 
    "isbrautbenutzer": true 
    }, { 
    "benutzerId": { 
     "benutzername": "dnikolic", 
     "geschlecht": "m", 
     "id": 2, 
     "nachname": "Nikolic", 
     "passwort": "test2", 
     "vorname": "Djordje" 
    }, 
    "hochzeitId": { 
     "id": 4 
    }, 
    "id": 4, 
    "isbrautbenutzer": false 
    }] 

我已經做到了,得到公正的benutzer,但我不知道如何返回一個JSON對象,其中僅ID是在這個對象,因爲我不想整個數據發送給請求者。

[{ 
    "benutzername": "Nenzema", 
    "geschlecht": "m", 
    "id": 1, 
    "nachname": "Marinovic", 
    "passwort": "test1", 
    "vorname": "Nenad" 
}, { 
    "benutzername": "dnikolic", 
    "geschlecht": "m", 
    "id": 2, 
    "nachname": "Nikolic", 
    "passwort": "test2", 
    "vorname": "Djordje" 
}] 

所以我的目的,是要得到這樣的:

[{ 
    "id": 1 
}, { 
"id": 2 
}] 

這是第一個列表查詢:

@NamedQuery(name = "Hochzeitsplan.findByBenutzerId", 
query = "SELECT h FROM Hochzeitsplan h WHERE h.benutzerId.id = :benutzerId"), 

這兩個查詢我還測試,但其不工作..

@NamedQuery(name = "Hochzeitsplan.getHochzeitsuserByHochzeitsId", 
query = "SELECT DISTINCT h.benutzerId FROM Hochzeitsplan h WHERE h.hochzeitId.id = :hochzeitId"), 

@NamedQuery(name = "Hochzeitsplan.findBenutzerIdByHochzeitsId", 
query = "SELECT h.benutzerId.id FROM Hochzeitsplan h WHERE h.hochzeitId.id = :hochzeitId"), 

這是我用於獲取列表響應的方法:

@GET 
@Path("/hochzeitIDneu={hochzeitId}") 
@Produces({MediaType.APPLICATION_JSON}) 
public Response getListByHochzeitID(@PathParam("hochzeitId") Integer hochzeitId) { 
    Query query=em.createNamedQuery("Hochzeitsplan.findByHochzeitId",Hochzeitsplan.class) 
        .setParameter("hochzeitId", hochzeitId); 
    List<Hochzeitsplan> a =query.getResultList(); 

    a.sort(new Comparator<Hochzeitsplan>() { 
     @Override 
     public int compare(Hochzeitsplan o1, Hochzeitsplan o2) 
     { 
      return o1.getId().compareTo(o2.getId()); 
     } 
    }); 

    if(a.isEmpty()) { 
     ErrorManager error1 = new ErrorManager(); 
     return Response.status(400).entity(error1.getError(Enums.ErrorResponses.NORESULTS)).build(); 
    } else { 
     return Response.ok(a.toArray(new Hochzeitsplan[a.size()])).build(); 
    } 
} 

回答