2014-05-03 3 views
0

Я пытаюсь создать веб-службу REST, которая возвращает детали пользователя.REST Web-сервис JSON format

Вот мой код:

//Actual web service methods implemented from here 
    @GET 
    @Path("login/{email}/{password}") 
    @Produces("application/json") 
    public Tourist loginUser(@PathParam("email") String email, @PathParam("password") String password) { 
     List<Tourist> tourists = super.findAll(); 
     for (Tourist tourist : tourists) { 
      if (tourist.getEmail().equals(email) && tourist.getPassword().equals(password)) { 
       return tourist; 
      } 
     } 
     //if we got here the login failed 
     return null; 
    } 

Это приводит следующий JSON:

{ 
    "email": "[email protected]", 
    "fname": "Adrian", 
    "lname": "Olar", 
    "touristId": 1 
} 

Что мне нужно:

{"tourist":{ 
      "email": "[email protected]", 
      "fname": "Adrian", 
      "lname": "Olar", 
      "touristId": 1 
     } 
    } 

Что бы мне нужно добавить в мой код произвести это?

+0

Какой язык? Ява? –

+0

Да, язык java –

+0

Это недействительный JSON, поэтому вы не можете не нарушать спецификацию. Вы уверены, что это именно то, что вы хотите? –

ответ

1

Если вы действительно хотите обернуть Tourist в другой объект, вы можете это сделать.

Tourist.java:

package entities; 

import javax.xml.bind.annotation.XmlRootElement; 

@XmlRootElement 
public class Tourist { 

    int touristId; 
    String email; 
    String fname; 
    String lname; 

TouristWrapper.java:

package entities; 

import javax.xml.bind.annotation.XmlRootElement; 

@XmlRootElement 
public class TouristWrapper { 

    Tourist tourist; 

SOResource.java:

package rest; 

import entities.Tourist; 
import entities.TouristWrapper; 
import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.PathParam; 
import javax.ws.rs.Produces; 

@Path("/so") 
public class SOResource { 

    @GET 
    @Path("/tourists/{id}") 
    @Produces("application/json") 
    public TouristWrapper loginUser(@PathParam("id") int id) { 
     Tourist tourist = new Tourist(id, "[email protected]", "John", "Doe"); 
     TouristWrapper touristWrapper = new TouristWrapper(tourist); 
     return touristWrapper; 
    } 
} 

Я упростил свой USECASE, но вы получите точку: Нет Tourist не возвращается, но TouristWrapper. Ответ JSON:

{ 
    "tourist": { 
     "email": "[email protected]", 
     "fname": "John", 
     "lname": "Doe", 
     "touristId": 1 
    } 
} 
+0

Спасибо, это то, что я искал, я попробую это –

+0

Рад, что я мог бы помочь. –