2014-05-03 294 views
0

我正在尝试创建一个返回用户详细信息的REST Web服务。REST Web服务JSON格式

这里是我的代码:

//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

什么语言? Java的? –

+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; 
    } 
} 

我已经简化了您的用例,但你明白了一点:没有返回TouristTouristWrapper。返回的JSON是这样的:

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

谢谢,这就是我一直在寻找的,我会尝试这个 –

+0

很高兴我能帮上忙。 –